鉴于以下内容:
myOption: Option[String]
检查Option中的String值是否为空(如果未定义,那么它应该被视为空)的最惯用的方法是什么?
myOption.getOrElse("").isEmpty
是最好/最干净的方式吗?
答案 0 :(得分:8)
你可以做到
def foo(s: Option[String]) = s.forall(_.isEmpty)
或者
def foo(s: Option[String]) = s.fold(true)(_.isEmpty)
fold
在不同的列表中有2个参数。第一个用于None
情况,另一个用于评估是否有String
。
就我个人而言,我更喜欢第一种解决方案,但第二种解决方案非常清楚,如果true
,您希望返回None
。
一些例子:
foo(Some("")) //true
foo(Some("aa")) //false
foo(None) //true
答案 1 :(得分:4)
myOption.forall(_.isEmpty)
一般规则是,对于你想要用Option做的任何事情,只有一种方法可以做到。