Option.toRight返回产品类型。这是什么意思?

时间:2016-01-11 06:34:24

标签: scala option either

这是我之前question的后续内容。评论中注意到toRight返回Product with Serializable with scala.util.Either

scala> val ox = Some(0)
ox: Some[Int] = Some(0)

scala> ox.toRight("No number")
res0: Product with Serializable with scala.util.Either[String,Int] = Right(0)

现在我想知道它与我需要的Either类型有什么不同。我应该明确地添加Either[String,Int]吗?

scala> ox.toRight("No number"): Either[String, Int]
res1: Either[String,Int] = Right(0)

1 个答案:

答案 0 :(得分:4)

类型

Product with Serializable with scala.util.Either[String,Int]

只是过于具体,因为编译器能够确定它是ProductSerializable,即使你不关心这些事情。这只是因为编译器总是告诉你它可以确定的最具体的类型,因为它自然不知道你想要什么级别的特异性。但它告诉你它是with scala.util.Either[String,Int],这就是你想要的,所以你不必担心额外的东西。如果你想使类型更简单,那么是的,只需明确声明它。