Ключевое слово return
зарезервировано для (класса) методов, оно не может использоваться в функциях. Вы можете легко проверить это:
object Foo {
val bar = (i: Int) => return i + i
}
Это дает
:42: error: return outside method definition
object Foo { val bar = (i: Int) => return i + i }
^
В основном вы можете рассматривать методы и функции как одно и то же, из-за того, что метод apply
функции синтаксически похож вызов метода и так называемое eta-расширение, позволяющее передавать метод как аргумент функции.
В этом случае это имеет значение. При определении как метода это законно:
object Foo {
def bar(i: Int): Int = return i + i
}
Таким образом, вы должны использовать return
только в методах, разрешающих условные (ранние) возвращения. См. этот пост для обсуждения методов и функций.