Руководство по actionscript. часть 3, стр. 042

Интерпретация экземпляра класса XMLL i s t как экземпляра класса XML делает использование расширения Е4Х более простым и удобным, но при этом порождает некоторые сбивающие с толку детали, особенно когда эта возможность применяется вместе с автоматическим преобразованием строк. Поближе познакомимся с этой проблемой.

Предположим, что мы создаем пользовательский интерфейс для книжного интернет-магазина, где каждая книга представлена XML-фрагментом, структура которого совпадает со структурой нашего примера с фрагментом. Когда пользователь выбирает книгу, на экране появляется соответствующее имя автора.

В нашем коде мы создаем метод displayAuthor ( ), который выводит имя автора. В первой реализации метода мы будем требовать, чтобы имя автора передавалось в виде строки:

public function displayAuthor (name:String):void { // authorField ссылается на экземпляр класса TextField, // в котором отображается имя автора authorField. text = name;

}

Когда пользователь выбирает книгу, мы получаем имя ее автора из элемента и передаем его в метод displayAuthor ( ), используя код наподобие следующего:

displayAuthor(novel. AUTHOR):

Данная инструкция проста и интуитивно понятна, но, как мы уже знаем из этой главы, «за кадром» происходит очень много действий. В качестве повторения проанализируем, как это работает. Во-первых, среда выполнения Flash передает выражение novel. AUTHOR в метод displayAuthor ( ) в качестве значения параметра name. Типом данных параметра name является String, поэтому среда Flash автоматически пытается преобразовать значение выражения novel. AUTHOR в строку, используя следующее выражение:

novel. AUTHOR. toString( )

По умолчанию вызов метода toString ( ) над объектом возвращает строку в формате [obj ect ИмяКласса], но выражение novel. AUTHOR представляет экземпляр класса XMLList, а класс XMLList переопределяет метод toString ( ) собственной версией. В частности, версия метода toString ( ) класса XMLList узнает, что значение выражения novel. AUTHOR содержит только один элемент, поэтому возвращается результат вызова метода toString( ) класса XML над этим элементом. Таким образом, вызов novel. AUTHOR. toString ( ) автоматически преобразуется в вызов novel. AUTHOR [ 0 ] . toString ( ). Что же является возвращаемым значением выражения novel. AUTHOR [ 0 ] . toString ( )? Как мы уже знаем, ответ основан на факте, что выражение novel. AUTHOR [0] представляет простой элемент XML, который не содержит других элементов-потомков. Для элемента XML, не содержащего других элементов, метод toString ( ) класса XML возвращает текстовый узел данного элемента в виде строки, исключая охватывающие теги. Значит, выражение novel. AUTHOR [0] .toString( ) в качестве окончательного значения, передаваемого в метод displayAuthor ( ), вернет значение «Joyce, James» (а не «Joyce/ James«).

Подведем итоги.

? Передача значения выражения novel. AUTHOR в качестве параметра типа String приводит к неявному преобразованию значения выражения novel. AUTHOR в строку.

? Значение выражения novel. AUTHOR преобразуется в строку с помощью вызова novel. AUTHOR. toString ( ).

? Выражение novel. AUTHOR. toString ( ) автоматически возвращает результат выражения novel. AUTHOR [ 0 ] . toString ( ), поскольку значение выражения novel. AUTHOR представляет экземпляр класса XMLList с одним-единственным элементом.

? Выражение novel. AUTHOR [0] . toString ( ) возвращает текст, содержащийся в элементе («Joyce, James»), в соответствии с реализацией метода toString ( ) класса XML (дополнительную информацию можно найти далее, в разд. «Преобразование объектов XML и XMLList в строки»).

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 11.03.2011">Руководство по actionscript. часть 3, стр. 146
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 143
  • 21.07.2011">Дизайн современных часов
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.54
  • 26.07.2011">Продвинуть бизнес поможет сайт
  • 19.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.6
  • 14.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.72
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 075
  • 08.03.2011">Руководство по actionscript. часть 4, стр. 085
  • 12.03.2011">Руководство по actionscript. часть 3, стр. 142
  • 04.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.23
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 036
  • 29.02.2012">«Яндекс.Диск» — российский ответ сервису iCloud от Apple
  • 14.03.2011">Руководство по actionscript. часть 3, стр. 070
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 001
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...