Scala "does not contain" 与字符串拆分
Scala "does not contain" with String split
我第一次尝试 Scala,不知道如何根据 not contains
进行过滤。
我有以下查询;
.filter(_.get[Option[String]]("status") map(_ split "," contains "Pending") getOrElse(false))
但是我想做如下的事情;
.filter(_.get[Option[String]]("status") map(_ split "," does not contain "Pending") getOrElse(false))
有人可以帮忙吗?
找到解决方案;
.filter(_.get[Option[String]]("status") map(a => !(a split "," contains "Pending")) getOrElse(false))
谢谢。
您可以使用 exists
和 forall
来简化此操作。如果集合的任何或所有元素的条件为 true
,则这些函数 return 为真。
所以模式
Option[String].map(???).getOrElse(false)
可以
Option[String].exists(???)
和条件
!(a split "," contains "Pending")
可以
a.split(",").forall(_ != "Pending")
将这两个应用到原始代码得到
.filter(_.get[Option[String]]("status").exists(_.split(",").forall(_ != "Pending")))
但我会推荐一个本地函数来澄清这段代码:
def notPending(s: String) = s.split(",").forall(_ != "Pending")
.filter(_.get[Option[String]]("status").exists(notPending))
这读作“获取状态选项存在且状态不是未决的所有值”
我第一次尝试 Scala,不知道如何根据 not contains
进行过滤。
我有以下查询;
.filter(_.get[Option[String]]("status") map(_ split "," contains "Pending") getOrElse(false))
但是我想做如下的事情;
.filter(_.get[Option[String]]("status") map(_ split "," does not contain "Pending") getOrElse(false))
有人可以帮忙吗?
找到解决方案;
.filter(_.get[Option[String]]("status") map(a => !(a split "," contains "Pending")) getOrElse(false))
谢谢。
您可以使用 exists
和 forall
来简化此操作。如果集合的任何或所有元素的条件为 true
,则这些函数 return 为真。
所以模式
Option[String].map(???).getOrElse(false)
可以
Option[String].exists(???)
和条件
!(a split "," contains "Pending")
可以
a.split(",").forall(_ != "Pending")
将这两个应用到原始代码得到
.filter(_.get[Option[String]]("status").exists(_.split(",").forall(_ != "Pending")))
但我会推荐一个本地函数来澄清这段代码:
def notPending(s: String) = s.split(",").forall(_ != "Pending")
.filter(_.get[Option[String]]("status").exists(notPending))
这读作“获取状态选项存在且状态不是未决的所有值”