Сфера переменных вопросов в AS3 - PullRequest
1 голос
/ 06 мая 2011
        // content loaders
        if (_contentLoaders != null)
        {
            // iterate through all the content loaders then dispose it
            for (var i:int = 0; i < _contentLoaders.length; i++)
            {
                _contentLoaders[i].dispose();

            }
            _contentLoaders.splice(0, _contentLoaders.length);
            _contentLoaders = null;
        }

        // text content loaders
        if (_textContentLoaders != null)
        {
            // iterate through all the text content loaders then dispose it
            for (var i:int = 0; i < _textContentLoaders.length; i++)
            {
                _textContentLoaders[i].dispose();
            }
            _textContentLoaders.splice(0, _textContentLoaders.length);
            _textContentLoaders = null;
        }

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

Из приведенного выше кода вы видите 2 блока цикла for, в которых вы видите, что я объявляю переменную i для каждого блока.Я запускаю этот код с FlashDevelop, настроенным с Flash v.10.2.Это выдает ошибку, в которой говорится, что «Дублирующееся определение переменной» .

Я мог бы решить эту проблему, объявив переменную i вне этих двух блоков цикла for, и повторно использовав i для обоих.Но для меня это не так чисто от кода.У меня вопрос:

"Это намерение ActionScript 3 быть таким же образом? Ограничив область видимости переменной таким образом. Или его можно изменить, можно настроить какую-то опцию для компилятора или, скажем, интерпретаторакак в этом случае? "

Заранее спасибо.

1 Ответ

0 голосов
/ 06 мая 2011

Измените имя i на j во втором цикле или объявите i вне цикла for, и все ваши проблемы будут решены.

Проблема в том, что, как только вы объявите i в первый раз, он существует в области действия функционального блока, поэтому, когда вы пытаетесь переопределить его дальше в блоке, вы получаете ошибку.

Лично я не вижу в этом ничего плохогокстати, объявляя i вне циклов.

Это проблема области действия в AS3, и вы, скорее всего, найдете ее и во многих других языках ООП.

...