Функции AS3: возможно ли вернуть значение внутри цикла? - PullRequest
0 голосов
/ 04 февраля 2010

Я пытаюсь найти индекс из массива с помощью функции цикла, но получаю ошибку:

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

Разве невозможно вернуть значение из цикла, или, скорее, я получаю ошибку каждый раз, когда не не возвращает значение?!?

Ответы [ 3 ]

1 голос
/ 05 февраля 2010
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;
}
0 голосов
/ 04 февраля 2010

Во многих языках программирования вы можете вернуться из любой точки метода. Компилятор, вероятно, жалуется, потому что не может быть уверен, что он найдет правильное значение в цикле, и тогда ему нечего будет возвращать (даже если вы, как разработчик, уверены, что он вернется до выхода из цикла).

Так что да, добавление некоторого возврата по умолчанию в конце является правильным решением, а -1 является распространенным ответом по умолчанию для такого рода вещей.

0 голосов
/ 04 февраля 2010

Вы можете вернуться из любой точки функции, но вы должны удовлетворить все пути кода возвращаемым значением. Как описано выше, вам нужно вернуть «недействительное» значение, чтобы указать, что индекс не найден, что обычно составляет -1.

...