Коллега только что показал мне это, и я был удивлен, что он вообще скомпилирован:
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
изнутри замыкания не было позволил. С каких это пор это сработало? Есть ли предостережения в отношении таких неместных доходов?