【发布时间】:2020-11-03 22:49:45
【问题描述】:
我知道在不破坏现有代码的情况下现在很难进行更改,但我想知道为什么一开始就这样做。
为什么不只是:
sealed trait Either[+A, +B]
case class Left[A](x: A) extends Either[A, Nothing]
case class Right[B](x: B) extends Either[Nothing, B]
这里有什么我没看到的缺点吗...?
【问题讨论】:
-
请注意,有人在这里问过关于
Try的相同问题,但从未得到满意的答案:stackoverflow.com/questions/22904250/… -
贡献者频道上的相关discussion。目前尚不清楚为什么最初的设计是这样的,但似乎没有进行更改,因为它可能会破坏代码(还不错),但也会破坏交叉编译(真的很糟糕!)当然可以使用
scala-collection-compat库之类的东西来解决,但当时似乎不是这样。