我有一个变量obj: Option[MyObject]
并希望从中提取多个变量 - 如果未设置对象,则应使用默认值。
目前我是这样做的:
val var1 = obj match {
case Some(o) => e.var1
case _ => "default1"
}
val var2 = obj match {
case Some(o) => e.var2
case _ => "default2"
}
...
这是非常冗长的。我知道我可以这样做:
val var1 = if (obj.isDefined) obj.get.var1 else "default1"
val var2 = if (obj.isDefined) obj.get.var2 else "default2"
这看起来仍然很奇怪。我知道我可以使用一个大匹配并返回一个值对象或元组。
但我想要的是与此类似的东西:
val var1 = obj ? _.var1 : "default1"
val var2 = obj ? _.var2 : "default2"
这可能吗somehow?
这个怎么样?
obj.map(_.var1).getOrElse("default1")
或者,如果您喜欢这种风格:
obj map (_ var1) getOrElse "default"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)