使用新的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 )
似乎有效,但看起来有点令人困惑。还有其他想法吗?
答案 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
但是你不会再在你的项目中的任何地方发出警告。而且我不太自信,我从不会意外地输入=
而不是==
,所以这不是我认为的好解决方案。