Загадка про switch + XML

Код:

  1. var xx:XML = <root attr=”1″></root>;
  2. switch(xx.@attr)
  3. {
    1. case 1:
      1. trace(”Case: 1″);
    2. break;
    3. case “1″:
      1. trace(”Case: 2″);
    4. break;
    5. default:
      1. trace(”Default”);
  4. }

Що буде в 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.

Залиште свій коментар


Fatal error: Call to undefined function is_human() in /home/pirr/public_html/blog/wp-content/themes/default/comments.php on line 94