Загадка про 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");
}
Що буде в output?
В output буде
Default
Тому що xx.@attr is XMLList.
З подібним треба бути обережним, т.я. особисто я два! рази витрачав по 1-2 години, щоб зловити помилку.
При роботі з XML намагайтесь використовувати зведення типів, якщо Вам потрібний String або Number. Тобто краще написати так:
switch( xx.@attr.toString() )
May 29, 2008 в 12:20
xx.@attr[0] :)
May 29, 2008 в 12:28
Так! Дуже добре!
June 12, 2008 в 12:57
Ха…я розгадав ))))
June 12, 2008 в 13:04
Молодець!
July 10, 2008 в 1:21
Я сразу подумал, что Default потому, что там открывающая и закрывающая кавычки разные.
А потом уже открыл статью. :)
А ещё, вместо xx.@attr[0] можно использовать кастинг String(xx.@attr) т.к. trace(getQualifiedClassName(xx.@attr[0])); даёт XML.