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的成员
您可能希望首先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)