[英]case class with scalaz.NonEmptyList[A] as member and the ===, equals, ==
[英]Scalaz finding for a certain type in a NonEmptyList[MyType]
我有一个经过验证的类型,我将该类型传递给一个函数,在该函数中,我对成功和失败进行模式匹配,并在失败块中,我希望从NonEmptyList中查看是否存在某种类型,如果是,我想返回true,否则返回false。
我写了一些,但是我觉得可以简化。
def checkTypeVaialble(param: V[Param]): Boolean = param match {
case Success(succ) => false
case Failure(fail) => {
val bools = fail.map {
case MyTypeA => true
case _ => false
}
val filtered = bools.list.filter(x => x == true)
if(!filtered.isEmpty) true else false
}
}
有没有更简单的方法? 我要做的是将所有失败映射到布尔值列表中,然后过滤布尔值列表为true并返回isEmpty的结果。 我可以进一步简化它吗?
使用collect或collectFirst应该可以:
def checkTypeVaialble(param: V[Param]): Boolean = param match {
case Success(succ) => false
case Failure(fail) => fail.collectFirst{ case m:MyTypeA => true}.isDefined;
}
另外,您可以使用存在与模式匹配:
def checkTypeVaialble(param: V[Param]): Boolean = param match {
case Success(succ) => false
case Failure(fail) => fail.exists{ case m:MyTypeA => true; case _ => false};
}
注意collect
,已经忽略了匹配失败的情况。 对于exist exists
,但是,您需要提供所有情况下的匹配项,否则会得到MatchError
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.