Показать сообщение отдельно
Старый 02.11.2006, 20:23
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 90  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
По умолчанию 12. Метки

В ActionScript 3 введены метки (url=http://livedocs.macromedia.com/flex/2/langref/statements.html#label]labels[/url]), новые идентификаторы, которые можно привязывать к блокам циклов. Зачем вам может понадобиться идентифицировать блок цикла? Потому, что этот идентификатор можно использовать в командах break и continue. Представьте себе два цикла, один вложен в другой. Если в какой-то момент вы захотите прервать оба цикла, находясь во внутреннем, вы этого сделать не сможете. Команда break прервет только текущий блок. Обычно для этих целей используют переменную-флаг, которую устанавливают во внутреннем цикле, чтобы иметь возможность проверить во внешнем и, при необходимости, выйти также и из него. Пример:
Код:
var i:Number;
var j:Number;
var exit:Boolean = false;
for (i=0; i<10; i++) {
    for (j=0; j<10; j++) {
        if (i > 3 && j > 3) {
            exit = true;
            break;
        }
    }
    if (exit) {
        break;
    }
}
Когда i больше 3 и j больше 3, используется break для выхода из текущего цикла, но это выход только из цикла по j. Для того, чтобы выйти и из цикла i, была использована переменная exit с условным оператором if в цикле по i.

Метки позволяют вам идентифицировать и прерывать указанный цикл (а также все вложенные в него). Формат метки label: statement
Пример:
Код:
var i:Number;
var j:Number;
mainLoop: for (i=0; i<10; i++) {
    for (j=0; j<10; j++) {
        if (i > 3 && j > 3) {
            break mainLoop;
        }
    }
}
Задав для первого цикла метку mainLoop, мы получили возможность легко прервать вложенный цикл, используя break mainLoop; Это позволяет писать более понятный код и избавляет от необходимости использовать дополнительные переменные.
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.