Показать сообщение отдельно
Старый 07.04.2011, 16:03
honest_man вне форума Посмотреть профиль Отправить личное сообщение для honest_man Найти все сообщения от honest_man
  № 8  
Ответить с цитированием
honest_man

Регистрация: Aug 2010
Сообщений: 86
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Ну так а что вы сделали? Вы же больше не обращаетесь динамически к XML. Вы обращаетесь динамически к пространству имен (т.е. не применяете оператор [] к XML). Ну а с пространством имен он так и работает.
Так. Стоп... Я начинаю путаться в терминологии. В моем понимании, я обращаюсь к методу toXMLString() класса XML, а обращение происходит при помощи уточненного идентификатора AS3::["toXMLString"](), где "локальное имя" задается динамически (строковым литералом в данном случае).

Это я все веду к тому, что скобки [] вообще не при чем. Это легко доказывается следующим отрывком кода:
Код AS3:
trace( XMLElement.AS3::[0] ); //Выводит первого ребенка XML-элемента
trace( XMLElement.AS3::["toXMLString"]() ); //Выполняет метод toXMLString() над экземпляром
                                                             // класса XML, находящимся в переменной XMLElement
Следовательно скобки [] превосходно справляются и с идентификаторами детей и с динамическим обращением к методам.
Просто, наверное, причина моего конфуза была в том, что открытые пространства имен и динамическое обращение несовместимы... т.е. когда мы открываем пространство имен (при помощи use namespace), то всем неуточненным идентификаторам на этапе компиляции неявно добавляется приставка в виде: "открытоеПространствоИмен::", однако если неуточненный идентификатор записан при помощи динамического синтаксиса ["какая-тоПеременная"], то приставка не добавляется при компиляции.

нужно будет потэстить эту догадку