将getOrElse与forall混合

Crt*_*Crt 1 functional-programming scala

我已经定义了一个选项:

val names : Option[Seq[String]] = Option(Seq("Bob", "Alice", "Mike"))
names.get.forall(m => Seq("Bob").contains(m))
Run Code Online (Sandbox Code Playgroud)

布尔值= false

但是,我想用getOrElse替换它以避免NPE.以下不起作用.

names.getOrElse.forall(m => Seq("Bob").contains(m))
Run Code Online (Sandbox Code Playgroud)

错误:值forall不是Object的成员

And*_*kin 5

您可能希望首先map将序列内部Option转换为布尔值,然后getOrElse是最终结果,并提供默认的布尔值.

names.map(_.forall(m => Seq("Bob").contains(m))).getOrElse(false)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,内部lambda也可以缩写:

names.map(_.forall(Seq("Bob").contains)).getOrElse(false)
Run Code Online (Sandbox Code Playgroud)