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

Таґи: ,

Коментарів: 7 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.

  6. Михаил:

    Очень было интересно читать, спасибо!

  7. fakir:

    Привет всем. Хочу также выразить глубокую благодарность людям, которые создали этот познавательный блог. Я поражён тем, что столько времени не пользовался им. Уже более недели не могу оторваться от огромного количества невероятно полезной информации. Сейчас рекомендую этот блог своим друзьям, чего советую и вам. Хотя и нашёл случайно ваш блог, но уже сразу понял, что останусь тут надолго. Интуитивно понятый интерфейс – главная заслуга для меня, т.к. моя специальность не требует больших знаний персонального компьютера и знаю основы работы лишь поверхностно.

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