Option[T]
for some 型T
を使用していて、オプションの値を特定の値に対してテストしたいと思うことがよくあります。例えば:
val opt = Some("oxbow")
if (opt.isDefined && opt.get == "lakes")
//do something
次のコードは同等で、オプションの値の存在をテストする要件を削除します。
if (opt.map(_ == "lakes").getOrElse(false))
//do something
しかし、これは私には読みにくいようです。その他の可能性は次のとおりです。
if (opt.filter(_ == "lakes").isDefined)
if (opt.find(_ == "lakes").isDefined) //uses implicit conversion to Iterable
しかし、これらが意図を明確に表現しているとは思いません。
if (opt.isDefinedAnd(_ == "lakes"))
誰かがこのテストを行うためのより良い方法を持っていますか?