2016-01-11 3 views
1

Это продолжение моих предыдущих question. Было отмечено в комментариях, что toRight возвращается Product with Serializable with scala.util.Either:Option.toRight возвращает тип товара. Что это значит?

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) 

ответ

3

Тип

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

просто слишком конкретным, потому что компилятор может определить, что это Product и Serializable, даже если вы не заботитесь об этих вещах. Это происходит только потому, что компилятор всегда сообщает вам наиболее специфический тип, который он может определить, поскольку, естественно, он не может знать, какой уровень специфичности вы хотите. Но это говорит вам, что это with scala.util.Either[String,Int], и это то, что вы хотите, поэтому вам не нужно беспокоиться о дополнительных материалах. Если вы хотите сделать тип более простым, тогда да, просто объявите его явно.

Смежные вопросы