Spesso mi trovo con un Option[T]
per un certo tipo T
e desidero testare il valore dell'opzione su qualche valore. Per esempio:Un modo migliore per verificare il valore di un'opzione?
val opt = Some("oxbow")
if (opt.isDefined && opt.get == "lakes")
//do something
Il codice seguente è equivalente e elimina la necessità di verificare l'esistenza del valore dell'opzione
if (opt.map(_ == "lakes").getOrElse(false))
//do something
Tuttavia questo sembra meno leggibile per me. Altre possibilità sono:
if (opt.filter(_ == "lakes").isDefined)
if (opt.find(_ == "lakes").isDefined) //uses implicit conversion to Iterable
Ma non credo che questi esprimono chiaramente l'intento sia che sarebbe meglio come:
if (opt.isDefinedAnd(_ == "lakes"))
chiunque ha un modo migliore di fare questo test?
Duh! A volte posso essere estremamente stupido –
Beh, mi capita sempre ;-) –
A volte la soluzione più semplice è la migliore :) –