Flex: назначение в условных выражениях - PullRequest
1 голос
/ 06 августа 2009
If I use an Assignment within conditional, for e.g.
if(userType='admin')
Flex throws a warning,unlike Java, which throws an error.
Why should Flex be doing this, despite being one of the newest languages?

1100: Assignment within conditional.  Did you mean == instead of =?

Ответы [ 2 ]

1 голос
/ 06 августа 2009

Потому что присваивания имеют значение в Actionscript, что делает этот синтаксис легальным, и они не имеют значения в Java, что делает его нет. Разница заключается в том, что, несмотря на недавние Java-изации, Actionscript является производным от ECMAScript. Другие последствия этого дизайна - способность делать заявления как это:

var foo:Number = 0;
var bar:Number = 0;
foo = bar = 2;
assertEquals(2, foo);
assertEquals(2, bar);

IMO, это лучшее поведение, которое у него может быть - оно не нарушает совместимость со старыми версиями Actionscript, и не удаляет языковые функциональные возможности с целью ручного хранения, но привлекает внимание к общей ошибке пользователя.

0 голосов
/ 06 августа 2009

Я предполагаю, что компилятор, вероятно, автоматически исправляет это?

Интересно, что Flex это сделал.

(и, кстати, это не "Flex", это Actionscript 3)

...