【问题标题】: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 是此类事情的常见默认答案。

        【讨论】:

          猜你喜欢
          • 2017-04-03
          • 1970-01-01
          • 2018-01-31
          • 2020-01-25
          • 2014-10-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多