def average(x: List[Int]) : Float =
x.foldLeft(0)(_ + _) / x.length.toFloat
ОБНОВЛЕНИЕ: Хотя я стремился показать, как итеративный код можно превратить в функциональное выражение, @soc справедливо заметил, что еще более короткая версия - x.sum / x.length.toFloat
, я обычно нахожу, что вСкала мне меньше нужна, чтобы «вернуться в середину».Кроме того, большая функция разбита на более мелкие выражения, более понятные для разума.Поэтому вместо
var x = ...
if (some condition) x = ...
else x = ...
я бы написал, если (какое-то условие) ... еще ....
Подобные вещи происходят с использованием выражений соответствия.И у вас всегда могут быть вспомогательные вложенные классы.
Как только вы освоитесь со многими формами выражений, которые оценивают результат (например, 'if') без оператора return, тогда наличие одного в ваших методах выглядит не по назначению.place.
На одном из рабочих мест у нас было правило не иметь «return» в середине метода, поскольку читателю вашего кода легко его пропустить.Если «return» находится только в последней строке, какой смысл вообще его иметь?