1

使用新的 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 )

似乎工作,但看起来有点混乱。还有其他想法吗?

4

2 回答 2

1

这可能看起来更好。

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

就像 removeChild

var d:DisplayObjectContainer;

while(d.numChildren > 0) {
    d.removeChildAt(0);
}
于 2013-06-21T14:18:49.353 回答
0

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

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

发生了什么是清晰易懂的,并且不依赖于在每次迭代时检查 Array 的长度。

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

于 2013-06-25T18:42:15.520 回答