Если вы не укажете return
явно, тогда возвращаемое значение будет результатом последнего выражения.В вашем первом примере ваше последнее выражение - x;
, поэтому оно будет возвращено в любом случае.Если вы хотите вернуть другое значение, вы можете использовать if/else if/else
:
def limit(x : Double, min: Double, max : Double) =
if (x < min) min
else if (x > max) max
else x
В этом случае if/else if/else
обрабатывается как одно выражение, которое возвращает одно значение.
Вы также можетеиспользуйте сопоставление с шаблоном следующим образом (это также одиночное выражение):
def limit(x : Double, min: Double, max : Double) = x match {
case x if x < min => min
case x if x > max => max
case _ => x
}
Я не думаю, что ваш второй пример можно охарактеризовать как «хороший scala».В таком простом случае все усложняется и имеет 3 точки возврата (вместо одной точки возврата).Это также добавляет больше ненужных шаблонов.