Scala检查选项中的字符串是否已定义且为空

时间:2014-06-13 03:29:12

标签: scala

鉴于以下内容:

myOption: Option[String]

检查Option中的String值是否为空(如果未定义,那么它应该被视为空)的最惯用的方法是什么?

myOption.getOrElse("").isEmpty是最好/最干净的方式吗?

2 个答案:

答案 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做的任何事情,只有一种方法可以做到。