ettaluni
@ettaluni
ERROR MEME

Можно ли использовать return;?

Доброго дня! Сегодня сталкивался с ситуацией почему нельзя использовать пустой return; в функциях?
Ведь return; == return false;
И почему нужно возвращать еще одно противоположное значение в функциях? Например если есть return false то должен быть и return true; Для меня return; это успешное окончание выполнения функции по задуманному плану.
function somthing($a, $b) {
	if ($a < $b) {
		doif();
	} else {
		doelse();
	}

	return;
}
  • Вопрос задан
  • 594 просмотра
Пригласить эксперта
Ответы на вопрос 7
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
ретюрн это точка выхода из функции больше этот оператор никому ничего не должен.

В вашем случае это значение по умолчанию, но так как функция void то это можно игнорировать
Ответ написан
Комментировать
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
return; - это бессмыслица, её надо убрать из кода
И никакое false она не возвращает.
Про "еще одно противоположное значение" вас тоже обманули

Если функции нечего вернуть, то ничего возвращать она и не должна.

Максимум, где можно использовать пустой return - если он используется для управления ходои исполнения. То есть чтобы досрочно завершить исполнение кода
Ответ написан
Комментировать
@karminski
Senior React.JS Developer
Ваша грубая ошибка в том, что return; !== return false, а === return void;
Ответ написан
v3shin
@v3shin
Веб-шаман
function a() {return;}
var_dump(a()); // NULL

Но для прозрачности кода было бы хорошо прописать, что там возвращает функция: какое-то значение или null чтобы было понятно, с чем сравнивать результат.
Ответ написан
Комментировать
@Vitsliputsli
Для меня return; это успешное окончание выполнения функции по задуманному плану.

Именно так, если от функции не требуется возвращать какое-то значение, то return вполне достаточно, либо его можно вообще опустить. Для таких функций выставляется возвращаемое значение void. Иной выход из нее - только Exception.

Ведь return; == return false;

И да, и нет. Вообще оператор == допустимо использовать только в крайних случаях, которые нужно обосновать. При нормальном сравнении ===, return не будет равен return false. Ваше равенство верно лишь потому, что php выполнил приведение типов перед сравнением.
Ответ написан
Комментировать
Просто укажи return type для функции и вопросы отпадут сами собой.
Ответ написан
Есть такое правило (не догма, просто правило) у функции (процедуры, подпрограммы не важно) в любом ЯП: один вход, один выход. Это многое упрощает в плане отладки и поддержки. В конце концов результат вызова оценивает вызывающий. В Си return * void " нынче называется "небезопасным", но, IMHO, таким удобным.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы