Руководство по actionscript. часть 2, стр. 153
Однако если нельзя использовать модификаторы управления доступом, с помощью чего можно управлять доступностью уточненного идентификатора? Ответ: с помощью доступности идентификатора уточняющего пространства имен.
Видимость уточненных идентификаторов
373
^ I Доступность уточняющего пространства имен в уточненном идентификаторе определя-
Ач ет доступность этого идентификатора. Если уточняющее пространство имен доступно в указанной области видимости, значит, доступен и уточненный идентификатор.
Например, в выражении game items. fruit: : orange переменная fruit: : orange доступна тогда, и только тогда, когда пространство имен fruit доступно в области видимости этого выражения. Доступность переменной fruit: : orange целиком и полностью определяется доступностью пространства имен fruit.
В листинге 17.2 демонстрируется видимость уточненного идентификатора на примере обобщенного кода.
Листинг 17.2. Демонстрация видимости уточненного идентификатора
// Создаем пространство имен п в пакете one. видимое только в этом пакете package one { internal namespace n = «http://www. example. eom/n»;
// Создаем переменную n::p в классе А, пакет one package one { public class A { n var p:int = 1:
// Поскольку пространство имен n объявлено с использованием модификатора // управления доступом internal, переменная п::р доступна в любом месте // внутри пакета one package one { public class В { public function В ( ) { var a:A = new A( ); trace(a. n::p); // OK
// Однако переменная n::p недоступна для кода за пределами пакета one package two { import one.*;
public class С { public function С ( ) { var a:A = new A( );
trace(a. n::p); // Недопустимо, поскольку пространство имен n
// объявлено с использованием модификатора управления // доступом internal в пакете one. и поэтому // недоступно в пакете two
Сравнение уточненных идентификаторов
Два пространства имен считаются одинаковыми тогда, и только тогда, когда совпадают их названия (URI). Например, чтобы определить, являются ли одинаковыми пространства имен в уточненных идентификаторах fruit : : orange и color: : orange, среда выполнения Flash не проверяет, соответствуют ли буквы слова «fruit» первого идентификатора буквам слова color второго идентификатора. Вместо этого среда Flash проверяет, совпадают ли значения переменной ur i экземпляра класса Namespace, на который ссылается идентификатор fruit, и экземпляра класса Namespace, на который ссылается идентификатор color. Если значение переменной f ruit. uri равняется значению переменной color, uri, то пространства имен считаются одинаковыми.