【发布时间】:2010-12-09 08:55:55
【问题描述】:
我经常发现自己对某些类型的T 有一个Option[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"))
有没有人有更好的方法来做这个测试?
【问题讨论】:
标签: scala option code-readability