Коллега просто показал мне это, и я был удивлен, что он скомпилирован вообще:
def toUpper(s: Option[String]): String = {
s.getOrElse(return "default").toUpperCase
// ^^^^^^ // a return here in the closure??
}
и это даже работает:
println(toUpper(Some("text"))) // TEXT
println(toUpper(None)) // default
Я думал, что return
изнутри закрытия не разрешено. С каких это пор это сработало? Существуют ли оговорки с такими нелокальными возвращениями?