Spesso mi ritrovo a scrivere Scala della forma:Idiomatic Scala per le opzioni al posto di if/else/else catena
def foo = {
f1() match {
case Some(x1) => x1
case _ =>
f2() match {
case Some(x2) => x2
case _ =>
f3() match {
case Some(x3) => x3
case _ =>
f4()
}
}
}
}
Questo è l'equivalente morale di Java
Object foo() {
Object result = f1();
if (result != null) {
return result;
} else {
result = f2();
if (result != null) {
return result;
} else {
result = f3();
if (result != null) {
return result;
} else {
return f4();
}
}
}
}
e sembra brutto e inutilmente prolisso. Mi sembra che ci dovrebbe essere un modo leggibile per farlo in una riga di Scala, ma non mi è chiaro cosa sia.
Nota: ho guardato allo Idiomatic Scala for Nested Options ma è un caso un po 'diverso.
@ m-z, ho aggiunto un'alternativa basata su 'f3()' restituendo un 'Opzione'. Grazie. – cmbaxter