【问题标题】:AS3 Functions: is it possible to return a value inside of a loop?AS3 函数:是否可以在循环内返回值?
【发布时间】:2010-02-04 00:50:57
【问题描述】:
我正在尝试使用循环函数从数组中查找索引,但出现错误:
private function findMatch(matchValue:int):int {
for (var i:int = 0; i < playersList.length; i++) {
if (playersList[i].value + matchValue == levelTarget) {
return i;
}
}
}
是否不可能从循环内部返回一个值,或者更确切地说,每次它不返回一个值时我都会收到错误?!?
【问题讨论】:
标签:
actionscript-3
arrays
loops
return-value
【解决方案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;
}
【解决方案2】:
你可以从函数中的任何地方返回,但你必须满足所有代码路径的返回值。如上所述,您需要返回一个“无效”值来表示没有找到索引,通常是-1。
【解决方案3】:
在许多编程语言中,您可以从方法中的任何点返回。编译器可能在抱怨,因为它不能确定它会在循环中找到正确的值,然后就没有任何东西可以返回(即使作为开发人员的你确信它会在退出循环之前返回)。
所以是的,在末尾添加一些默认返回是正确的做法,-1 是此类事情的常见默认答案。