在ghci,我跑了:
ghci> :t Right 5
Right 5 :: Num b => Either a b
这是什么意思a?
它与Scala的版本相比如何?
scala> Right(5)
res0: scala.util.Right[Nothing,Int] = Right(5)
Cub*_*bic 10
a就像b在这个例子中一样,是一个类型变量.它可以用任何类型实例化(而b可以用满足约束的任何类型实例化它也是它的实例Num).
由于scala的类型系统完全不同,scala示例的工作方式完全不同; 没有真正的值概念具有未完全实例化的类型,因此您需要为Left您的Either值的可能性指定类型.除非有进一步的限制,否则这最终会成为现实Nothing.由于scala类型系统的工作方式(Nothing作为任何其他类型的子类型,因此您可以将其视为Any类型的双重类型),a Either[Nothing,B]也Either[A,B]  适用于任何类型A.