Почему явный оператор return (тот, который использует ключевое слово return
) в анонимной функции возвращает из включенной именованной функции, а не только из анонимной функции?
например. следующая программа приводит к ошибке типа:
def foo: String = {
((x: Integer) => return x)
"foo"
}
Я знаю, что рекомендуется избегать ключевого слова return
, но меня интересует, почему явные и неявные операторы return имеют другую семантику в анонимных функциях.
В следующем примере оператор return "выживает" после завершения m
завершил выполнение, и программа завершила исключение во время выполнения. Если анонимные функции не вернулись из закрывающей функции, было бы невозможно скомпилировать этот код.
def main(args: Array[String]) {
m(3)
}
def m: (Integer => Unit) =
(x: Integer) => return (y: Integer) => 2