Для уточнения используемого пространства имен (см. совет 54) вместе с оператором «::» (
name qualifier operator), можно использовать use namespace (
use namespace directive). use namespace определяет пространство имен на весь блок кода (package, class, method). use namespace нельзя дважды использовать в одном блоке, но можно обратиться к другому пространству имен через оператор «::»
Пример:
Код:
package {
public namespace company = "http://www.example.com/company";
public namespace individual = "http://www.example.com/individual";
public class UsingNameSpaces {
use namespace individual;
company var value:int = 10;
individual var value:int = 2;
public function UsingNameSpaces(){
showValue(); // traces individual::2
company::showValue(); // traces company::2;
}
company function showValue() {
trace("company::" + value);
}
individual function showValue() {
trace("individual::" + value);
}
}
}
В этом легко запутаться, хоть все и логично. Здесь директивой use namespace было назначено по умолчанию для всего класса использовать пространство имен individual. Соответственно первый вызов метода showValue без указания пространства имен это аналог individual::showValue. Во втором вызове явно указано пространство имен company, но поскольку в самом методе showValue используется свойство value без указания пространства имен, то по умолчанию берется то, что назначено use namespace, т.е. individual и метод company::showValue выводит 2 (individual::value) а не 10 (company::value).