Scala 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(_))

类型推断的什么变化为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(_))
                                        ^
       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]

是的,它是。我想这些更改也会影响类型推断