読者です 読者をやめる 読者になる 読者になる

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: