Руководство по actionscript. часть 2, стр. 154
Таким образом, когда мы записываем следующее выражение:
trace(fruit::orange == color::orange);
среда Flash выполняет данное сравнение (обратите внимание на использование расширенных имен, которые рассматривались в разд. «Уточненные идентификаторы»):
{http://www. examplе. com/games/ki dsgame/fruit}orange == {http://www. example. com/games/ki dsgame/col or}orange
Даже если два уточненных идентификатора внешне кажутся различными, на деле они могут оказаться одинаковыми и привести к неожиданным конфликтам имен. Например, в следующем коде попытка определить переменную ns2 : : р вызовет ошибку на этапе компиляции, поскольку переменная с расширенным именем {http : / /www. example. com/general}p уже существует:
namespace nsl = «http://www. example. com/general»
namespace ns2 = «http://www. example. com/general»
nsl var p:int = 1:
ns2 var print = 2; // Ошибка! Повторное определение переменной!
Даже несмотря на то, что идентификаторы ns 1 и ns 2 являются различными, переменные nsl: :р и ns2: : р считаются одинаковыми, поскольку они имеют одинаковые расширенные имена ({http: / /www. example. com/general }p).
Стоит отметить, что названия пространств имен (идентификаторы URI) сравниваются как строки, с учетом регистра символов. Поэтому, несмотря на то, что для браузера два идентификатора URI, которые отличаются только регистром символов, будут считаться одинаковыми, в языке ActionScript они будут считаться различными. В ActionScript следующие два идентификатора URI считаются различными, поскольку слово example в первом случае начинается со строчной буквы, а во втором — с прописной:
namespace nsl = «http://www. example. com» namespace ns2 = «http://www. Example. com» trace(nsl == ns2); // Отображает: false
Присваивание и передача значений пространств имен
Поскольку каждое пространство представлено экземпляром класса Namespace, пространства имен могут присваиваться переменным или элементам массива, передаваться в методы и возвращаться из методов и вообще могут быть использованы, как любой другой объект. Эта гибкость позволяет:
? передавать пространство имен из одной области видимости в другую;
? динамически выбирать одно пространство имен из нескольких на этапе выполнения программы.