JavaからScalaのスイッチャーとして、私は定期的に、私はそれが醜いとそれ本当には、Aのように見えると思う自分がScalaのベスト・プラクティス:簡単なオプション[]用法
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)
}
}
のようなヌル取り扱いのものを書き換え見つけます
Javaでも醜いですが、少なくとも1行少なくなります。 Scalaでこのような単純なケースを処理するベストプラクティスは何ですか?私は既にとflatten
のコレクションを処理して、Option[Stuff]
のコレクションを知っています。私はデフォルト値を扱うためにgetOrElse
を知っています。私は何かの夢:
items.get(coords).doIfDefined(item =>
// do stuff with item
)
が、私はOption
APIでそのような何も表示されません。
これは役立つかもしれない:http://dibblego.wordpress.com/2008/01/16/scalaoption-cheat-sheet/は – dhg