AS3函数:是否可以在循环内返回一个值?

时间:2010-02-04 00:50:58

标签: actionscript-3 arrays loops return-value

我试图使用循环函数从数组中找到索引,但是我收到错误:

private function findMatch(matchValue:int):int {
        for (var i:int = 0; i < playersList.length; i++) {
           if (playersList[i].value + matchValue == levelTarget) {
                        return i;
                } 
                }
    }

是否无法从循环内部返回值,或者更确切地说,每次返回值时我都会收到错误?!

3 个答案:

答案 0 :(得分:1)

private function findMatch(matchValue:int):int {
    var _i:int = -1;
    for (var i:int = 0; i < playersList.length; i++) {
       if (playersList[i].value + matchValue == levelTarget) {
                 _i = i;
                break;  
        } 
    }
    return _i;
}

答案 1 :(得分:0)

您可以从函数中的任何位置返回,但必须使用返回值来满足所有代码路径。如上所述,您需要返回“无效”值以指示未找到索引,通常为-1

答案 2 :(得分:0)

在许多编程语言中,您可以从方法中的任何位置返回。编译器可能抱怨,因为它无法确定它是否会在循环中找到正确的值,然后将无法返回(即使您作为开发人员确信它将在退出循环之前返回)。 / p>

所以是的,在最后添加一些默认返回是正确的事情,-1是这种事情的常见默认答案。