列表[字符串] 没有从猫遍历的成员



我正在尝试使用来自catstraverseList[Either[Int]]转换为Either[List[Int]]

错误

[error] StringCalculator.scala:19:15: value traverseU is not a member of List[String]
[error]       numList.traverseU(x => {

法典

  import cats.Semigroup
  import cats.syntax.traverse._
  import cats.implicits._

  val numList = numbers.split(',').toList
  numList.traverseU(x => {
      try {
          Right(x.toInt)
      } catch {
        case e: NumberFormatException => Left(0)
      }
    })
      .fold(
        x => {},
        x => {}
      )

我也尝试过遍历而不是遍历U。

配置(猫(

lazy val root = (project in file(".")).
  settings(
    inThisBuild(List(
      organization := "com.example",
      scalaVersion := "2.12.4",
      scalacOptions += "-Ypartial-unification",
      version      := "0.1.0-SNAPSHOT"
    )),
    name := "Hello",
    libraryDependencies += cats,
    libraryDependencies += scalaTest % Test
  )

它确实应该只是traverse,只要您使用的是最新的 cats 版本 (1.0.x(,但是,您不能同时导入cats.syntaxcats.implicits._因为它们会冲突。

不幸的是,每当 Scala 编译器看到隐式冲突时,它都会给你一个非常无用的消息。

删除导入cats.syntax,它应该可以正常工作。有关更多信息,请查看导入指南。

你只需要cats.implicits._ . 例如

import cats.implicits._
val numbers = "1,2,3"
val numList = numbers.split(',').toList
val lst = numList.traverse(x => scala.util.Try(x.toInt).toEither.leftMap(_ => 0))
println(lst)

相关内容

  • 没有找到相关文章

最新更新