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

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

Для уточнения используемого пространства имен (см. совет 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).
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.