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

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