首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将序列函数应用到猫的ValidatedNel列表中?

如何将序列函数应用到猫的ValidatedNel列表中?
EN

Stack Overflow用户
提问于 2019-01-11 14:20:11
回答 1查看 789关注 0票数 3

我有以下代码

代码语言:javascript
复制
sealed trait DomainValidation {
  def errorMessage: String
}
type ValidationResult[A] = ValidatedNel[DomainValidation, A]
val ai:ValidationResult[String] = "big".validNel
val bi:ValidationResult[String] = "leboski".validNel
val l = List(ai,bi)

我想把l转换成ValidationResult[List[String]]。我遇到了sequence功能,但是我无法使用sequence,因为有些隐式必须存在,它知道如何处理ValidationResult[A]。但我不知道到底需要什么。我写了以下文章

代码语言:javascript
复制
object helper {
  implicit class hello[A](l: List[ValidationResult[A]]) {
    def mysequence: ValidationResult[List[A]] = {
     val m = l.collect { case Invalid(a) => Invalid(a) }
     if (m.isEmpty) l.map { case Valid(a) => a }.validNel
     else /* merge the NonEmpty Lists */
    }
  }
}

我能做l.mysequence。但我如何使用猫sequence

PS:我是scala初学者。学习困难:)。原谅任何不正确的提及。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-11 14:29:51

在Scala2.12上,以下内容应如预期的那样工作:

代码语言:javascript
复制
import cats.data.ValidatedNel, cats.syntax.validated._

// Your code:
sealed trait DomainValidation {
  def errorMessage: String
}
type ValidationResult[A] = ValidatedNel[DomainValidation, A]
val ai:ValidationResult[String] = "big".validNel
val bi:ValidationResult[String] = "leboski".validNel
val l = List(ai,bi)

然后:

代码语言:javascript
复制
scala> import cats.instances.list._, cats.syntax.traverse._
import cats.instances.list._
import cats.syntax.traverse._

scala> l.sequence
res0: ValidationResult[List[String]] = Valid(List(big, leboski))

您不显示您的代码,也不解释什么不工作,所以很难诊断您的问题,但它可能是以下问题之一:

  1. 在Scala2.11上,.sequence要求在编译器选项中启用-Ypartial-unification。如果使用sbt,可以通过将scalacOptions += "-Ypartial-unification"添加到build.sbt (假设您在2.11.9+上)来做到这一点。
  2. 您省略了一个必要的导入。您至少需要ListTraverse实例和Traverse的语法。上面的示例代码包括您需要的两个导入,或者您只需导入cats.implicits._并使您的生活变得简单一些。

如果这不是这两件事之一,你可能需要在你的问题中包含更多的细节,这样我们才能有所帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54148341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档