Руководство по actionscript. часть 3, стр. 010
Что же произойдет в том случае, если используется неуточненная ссылка, как, например, orange, которая соответствует двум уточненным идентификаторам:
public function showltems ( ):void { use namespace fruit: use namespace color:
// Соответствует fruit::orange и color::orange -// что произойдет в этом случае? trace(orange);
}
Если неуточненная ссылка соответствует имени в более чем одном пространстве имен, возникает ошибка на этапе выполнения. Предыдущий код вызовет следующую ошибку:
Ambiguous reference to orange.
По-русски ошибка будет выглядеть следующим образом: Неоднозначная ссылка на orange.
Из-за ошибки в некоторых компиляторах компании Adobe предыдущая ошибка может остаться незамеченной.
Если открыты оба пространства имен fruit и color, мы должны использовать уточненные идентификаторы fruit: : orange или color: : orange для обращения к нашим переменным orange, исключая неоднозначность, как показано в следующем коде:
public function showltems ( ):void { use namespace fruit; use namespace color;
trace(apple); // Выводит: Apple trace(purple); // Выводит: Purple
// Открыты оба пространства имен fruit и color, поэтому ссылки // на переменную orange должны быть полностью уточнены. trace(fruit::orange); trace(color::orange);
}
Пространства имен для модификаторов управления доступом
Точно так же, как мы используем пространства имен для управления видимостью переменных и методов в наших собственных программах, язык ActionScript использует пространства имен для управления видимостью каждой переменной и каждого метода в любой программе! Помните четыре модификатора управления доступом в ActionScript — public, internal, protected, private? Сам язык ActionScript реализует приведенные правила видимости с помощью пространств имен. Например, с точки зрения ActionScript определение переменной:
class А { private var p:int;
}
означает «создать новую переменную р, уточняемую пространством имен private класса А».