Руководство по actionscript. часть 3, стр. 043
После всего сказанного и сделанного выражение
displayAuthor(novel. AUTHOR);
преобразуется в выражение
displayAuthor(«Joyce, James»);
которое мы и предполагали увидеть.
В большинстве случаев мы можем игнорировать предыдущее усложнение, поскольку расширение Е4Х, говоря ненаучным языком, «делает то, что подразумевается». Однако существуют моменты, когда необходимо понимать действия «автопилота» в лице расширения Е4Х, чтобы осуществлять «ручное управление». Предположим, мы решили, что в книжном магазине должно выводиться не только имя, но и дата рождения каждого автора. Изменим структуру нашего фрагмента XML, чтобы включить дату рождения в качестве ребенка элемента
var novel:XML =
Joyce, James
Соответственно изменим метод displayAuthor ( ), чтобы он принимал элемент
public function displayAuthor (author. XML):void { authorField. text = «Name: » + author. NAME
+ » Birthdate: » + author. BIRTHDATE;
}
Обратите внимание, что в данном коде тип данных параметра был изменен с типа String на XML. Если сейчас мы попытаемся передать значение выражения novel. AUTHOR в метод displayAuthor ( ), на этапе выполнения возникнет ошибка несоответствия типов, поскольку среда Flash не может осуществить неявное преобразование значения выражения novel. AUTHOR (которое является объектом XMLList) к экземпляру класса XML:
displayAuthor(novel. AUTHOR); //Ошибка #1034: Ошибка операции приведения
//типов: невозможно преобразовать XMLList в XML
Чтобы исправить данную ошибку, мы должны явно ссылаться на экземпляр класса XML, представляющий элемент
di splayAuthor(novel. AUTHOR[0]); // Передаем единственный экземпляр класса
// XML, принадлежащий значению выражения’ // novel. AUTHOR, в метод displayAuthor( )
Обратите внимание на важное отличие: когда мы хотим обратиться к тексту, содержащемуся в элементе