Игровое программирование Python: мой IO является объектом законный кандидат на то, чтобы быть глобальной переменной?

Вы сохраняете в переменной , что ссылку на элемент , и используете ее для добавления к документу. Вы должны обернуть элемент перед вызовом метода после.

Кроме того, при вызове ajax вы устанавливаете значение dataType в html , когда кажется, что вы ожидаете json .

Итак, в итоге ваш код должен выглядеть так:

$("#category li").one('click', function() {
    var $that = $(this);
    var catId = $that.attr("id");

    $.ajax({
        type: 'GET',
        url: ''+catId,
        dataType: 'json',
        data: { category: catId},
        beforeSend: function() {
            $("#loader").show();
        }
    })
    .done(function(data) {
        data.forEach(function(category) {
            $that.after('
  • '+category.id+'
  • '); }); }) .fail(function() { alert( "Fetch failed." ); }); });

    5
    задан 26 March 2009 в 22:17
    поделиться

    3 ответа

    Да, это - законное использование глобальной переменной. Если Вы быть бы, раздав объект контекста, который эквивалентен этому глобальному, другая опция, как Вы упомянули.

    Так как я предполагаю, что Вы используете несколько файлов (модули), почему бы не что-то как:

    import io
    io.print('hello, world')
    io.clear()
    

    Это - распространенный способ программы, которые имеют более сложные потребности ввода-вывода, чем простая печать делает вещи как вход.

    9
    ответ дан 13 December 2019 в 22:16
    поделиться

    Да, я думаю так.

    Другая возможность состояла бы в том, чтобы создать модуль loggerModule это имеет функции как print() и write(), но это только незначительно было бы лучше.

    1
    ответ дан 13 December 2019 в 22:16
    поделиться

    Нет.

    Переменные слишком конкретны, чтобы быть розданными в глобальном пространстве имен. Скройте их в статических функциях/классах вместо этого, которые могут сделать волшебные вещи им во время выполнения (или назвать другие полностью).

    Рассмотрите то, что происходит, если IO может периодически изменять состояние или если это должно заблокироваться некоторое время (как много сокетов, делают).

    Рассмотрите то, что происходит, если тот же блок кода включен многократно. Переменный экземпляр становится дублированным также?

    Рассмотрите то, что происходит, если Вы хотите иметь версию 2 той же переменной. Что, если Вы хотите изменить его интерфейс? Необходимо ли изменить весь код, который ссылается на него?

    Действительно имеет смысл заражать весь код, который использует переменную со знанием всех способов, которыми это может разложиться?

    0
    ответ дан 13 December 2019 в 22:16
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: