Scala Dotty中多参数列表的更好类型推断
类型推断的什么变化为Dotty中的Scala Dotty中多参数列表的更好类型推断,scala,type-inference,fold,dotty,scala-3,Scala,Type Inference,Fold,Dotty,Scala 3,类型推断的什么变化为Dotty中的选项#fold带来了类型推断?比如说 Starting dotty REPL... scala> Option(5).fold(Left("err"))(Right(_)) val res0: Either[String, Int] = Right(5) 在Scala 2.13.3中,it错误 scala> Option(5).fold(Left("err"))(Right(_))
选项#fold
带来了类型推断?比如说
Starting dotty REPL...
scala> Option(5).fold(Left("err"))(Right(_))
val res0: Either[String, Int] = Right(5)
在Scala 2.13.3中,it错误
scala> Option(5).fold(Left("err"))(Right(_))
^
error: type mismatch;
found : scala.util.Right[Nothing,Int]
required: scala.util.Left[String,Nothing]
这似乎与选项#fold
fold[B](ifEmpty: => B)(f: A => B): B
在Scala 2中,它的工作方式如下
这种行为或推论通过以下方式非常深入:
应用程序是经过类型检查的,并且依赖于API,如
foldLeft,允许通过考虑
第一个参数列表,允许您在第二个参数中省略类型
名单
但是,在上面的示例中,它适得其反,因为应用于第二个参数列表的“累积约束”是Left[String,Nothing]
是的,它是。我想这些更改也会影响类型推断