繁体   English   中英

Scalaz在NonEmptyList [MyType]中查找特定类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM