Загадка про switch + XML
Код:
- var xx:XML = <root attr=”1″></root>;
- switch(xx.@attr)
- {
- case 1:
- trace(”Case: 1″);
- break;
- case “1″:
- trace(”Case: 2″);
- break;
- default:
- trace(”Default”);
- case 1:
- }
Що буде в output?
В output буде
Default
Тому що xx.@attr is XMLList.
З подібним треба бути обережним, т.я. особисто я два! рази витрачав по 1-2 години, щоб зловити помилку.
При роботі з XML намагайтесь використовувати зведення типів, якщо Вам потрібний String або Number. Тобто краще написати так:
switch( xx.@attr.toString() )
Травень 29, 2008 в 12:20
xx.@attr[0]
Травень 29, 2008 в 12:28
Так! Дуже добре!
Червень 12, 2008 в 12:57
Ха…я розгадав ))))
Червень 12, 2008 в 13:04
Молодець!
Липень 10, 2008 в 1:21
Я сразу подумал, что Default потому, что там открывающая и закрывающая кавычки разные.
А потом уже открыл статью.
А ещё, вместо xx.@attr[0] можно использовать кастинг String(xx.@attr) т.к. trace(getQualifiedClassName(xx.@attr[0])); даёт XML.
Січень 6, 2009 в 3:43
Очень было интересно читать, спасибо!
Січень 7, 2009 в 5:15
Привет всем. Хочу также выразить глубокую благодарность людям, которые создали этот познавательный блог. Я поражён тем, что столько времени не пользовался им. Уже более недели не могу оторваться от огромного количества невероятно полезной информации. Сейчас рекомендую этот блог своим друзьям, чего советую и вам. Хотя и нашёл случайно ваш блог, но уже сразу понял, что останусь тут надолго. Интуитивно понятый интерфейс – главная заслуга для меня, т.к. моя специальность не требует больших знаний персонального компьютера и знаю основы работы лишь поверхностно.