【发布时间】:2013-06-15 07:40:46
【问题描述】:
在我的 Scala 程序中,我收到了一些 JSON。
其中一个字段是可选的布尔值。如果该字段丢失,或者它的值为 false,我想返回 None。如果它的值为真,我想返回Some(true)。
由于这相当于将Some(false) 转换为None,所以我定义了以下函数:
def boolmap(ob: Option[Boolean]) = if(ob == Some(false)) None else ob
它有效,但似乎不是很惯用。还有什么更优雅的吗?
【问题讨论】:
-
由于您要将三元条件简化为双重条件,IMO 惯用的方法是生成一个普通布尔值 (
getOrElse(false)) 并删除Option -
@0__ 选项对于我以后必须做的一些处理来说非常方便。
-
你不能使用
ob.isDefined来获取底层的布尔值吗? -
@JasonD 但是那会为
Some(false)返回None吗? -
会的,我明白你的意思了。
标签: scala