Come un Java-to-Scala switcher, Io abitualmente ritrovo riscrittura roba movimentazione nulla comeScala migliori pratiche: semplice opzione di utilizzo []
val itemOpt: Option[Item] = items.get(coords) // "items" is something like a Map
if (itemOpt.isDefined) {
val item = itemOpt.get
// do something with item, querying item fields a lot of times, for example
if (item.qty > 10) {
storeInVault(item.name, item.qty, coords)
} else {
storeInRoom(item)
}
}
Credo che sembra brutto e davvero si presenta come un pezzo di codice riscritto da Java di:
Item item = items.get(coords);
if (item != null) {
// do something with item, querying item fields a lot of times, for example
}
sembra anche brutto in Java, ma almeno è una linea meno. Qual è la migliore pratica per gestire casi così semplici in Scala? Conosco già lo flatMap
e lo flatten
per gestire le raccolte di Option[Stuff]
e so di getOrElse
per gestire i valori predefiniti. Io sogno di qualcosa di simile:
items.get(coords).doIfDefined(item =>
// do stuff with item
)
ma non vedo niente di simile in Option
API.
Questo potrebbe aiutare: http://dibblego.wordpress.com/2008/01/16/scalaoption-cheat-sheet/ – dhg