scala.PartialFunction condOpt を使おう
同僚に教えて貰った。
scala.PartialFunction condOpt を使おうに書いてあるサンプルを見るとわかる。
ポイントは
- match式を使っていて
- そのmatch式の戻り値の型がOption
- 先頭からmatchさせていったとき、一番最後以外のmatchした場合については、明示的にSomeに包んで返している
- なので最後は case _ => None というのがくる
つまりモチベーションとしては
- 毎回自ら明示的にSomeに包むの面倒
- case _ => Noneという定形コードうざい
PartialFunction.condOpt(code){ case SimpleLocale(language) => Lang(language, "") case CountryLocale(language, country) => Lang(language, country) } // これの返り値は`Option[Lang]`になる!
とにかく、match書いてわざわざSomeで包んで、ないときはNoneっていうコードを書いていたらcondOpt
を思い出してあげてほしい:pray: