如何抑制警告“条件内的分配。你的意思是==而不是=?”

时间:2013-06-21 14:05:24

标签: actionscript-3 compiler-warnings

使用新的ASC 2.0编译器,当我编写如下代码时会收到警告:

// (_achievementsFromServer is an Array)
while(item=_achievementsFromServer.pop())
{
    // do something with item here
}

警告显示:"Assignment within conditional. Did you mean == instead of =?"
虽然总的来说我很欣赏编译器的所有警告,但我想在这种情况下压制这个警告,因为我在这里做了意味着==。我想弹出数组中的所有项目并使用它做一些事情,直到数组为空。

while( (item=_achievementsFromServer.pop())==true )

似乎有效,但看起来有点令人困惑。还有其他想法吗?

2 个答案:

答案 0 :(得分:1)

这似乎更好。

while(_achievementsFromServer.length > 0) {
    var item:Object = _achievementsFromServer.pop();
}

就像removeChild

一样
var d:DisplayObjectContainer;

while(d.numChildren > 0) {
    d.removeChildAt(0);
}

答案 1 :(得分:0)

虽然我希望采取其他方式,但我认为@AmyBlankenship改进了我自己的建议:

while((item=_achievementsFromServer.pop())!=null)
{
    //....
}

清楚可理解发生了什么,并且不依赖于每次迭代都检查数组的长度。

谷歌搜索了一些我发现编译器选项-compiler.warn-assignment-within-conditional可以设置为false但是你不会再在你的项目中的任何地方发出警告。而且我不太自信,我从不会意外地输入=而不是==,所以这不是我认为的好解决方案。