Просмотр полной версии : Функция не возвращает значения.
ZackMercury
18.01.2014, 17:27
Не пойму, в чем проблема. Компилятор совсем упоролся, чтоль.
private function getFriend(uid:int):Friend
{
for (var currentFriend:int = 0; currentFriend < _friends.length; currentFriend ++)
{
if (uid == _friends[currentFriend].getUID())
return _friends[currentFriend];
}
}
Что вернет функция, если условие всегда будет false? Добавьте после цикла return null.
ZackMercury
18.01.2014, 17:43
Что вернет функция, если условие всегда будет false? Добавьте после цикла return null.
Это функция для получения друга по UID. Передается UID, и в цикле сравнивается с каждым элементом массива со всеми друзьями, получая его UID. Функция нигде не используется. Поэтому функция должна возвращать один объект, один раз условие должно вернуть true.
Добавлял после цикла return null, сам до этого додумался, всё равно "Функция не возвращает значение" и ссылка на закрывающую скобку этой функции.
Добавлено через 1 минуту
Убрал указание типа возвращаемого объекта, компилятор успокоился. Но так функция выглядит не красиво :)
Vansimar
18.01.2014, 17:56
всегда должен быть возврат для false
Добавлял после цикла return null, сам до этого додумался, всё равно "Функция не возвращает значение" и ссылка на закрывающую скобку этой функции.
Должно было помочь по идее.
caseyryan
18.01.2014, 18:11
private function getFriend(uid:int):Friend
{
for (var currentFriend:int = 0; currentFriend < _friends.length; currentFriend ++)
{
if (uid == _friends[currentFriend].getUID())
return _friends[currentFriend];
}
return null;
}
100% будет работать. Если не будет, значит проблема где-то в другом месте. Возможно при вызове этого метода где-то нет проверки на null
ZackMercury
18.01.2014, 18:25
Должно было помочь по идее.
А, ну да. Я пытался ставить в else(для проверки, будет ли работать). Поставил после цикла и всё заработало.
Спасибо.
caseyryan
18.01.2014, 18:31
Зачем в else? Вы подумайте как логика цикла будет работать.
Первая итерация: сравниваем id. Не совпал, тогда обрываем выполнение и возвращаем null
Естественно, не факт, что при первой итерации будет совпадение. Цикла надо прогнать до первого совпадения, или до конца, в любом случае
ZackMercury
18.01.2014, 18:43
Для проверки, однако текст ошибки не изменился даже при наличии возвращения в else.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.