Загадка про 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() )

Таґи: ,

Коментарів: 5 to “Загадка про switch + XML”

  1. Zzloba:

    xx.@attr[0] :)

  2. pirrest:

    Так! Дуже добре!

  3. Volodymyr:

    Ха…я розгадав ))))

  4. pirrest:

    Молодець!

  5. a_[w]:

    Я сразу подумал, что Default потому, что там открывающая и закрывающая кавычки разные.
    А потом уже открыл статью. :)
    А ещё, вместо xx.@attr[0] можно использовать кастинг String(xx.@attr) т.к. trace(getQualifiedClassName(xx.@attr[0])); даёт XML.