2017-04-03 182 views
1

我有一個和特質,看起來像如下:泛型類型和類型不匹配

sealed trait Sum[+A, +B] 

final case class Failure[A](value: A) extends Sum[A, Nothing] 

final case class Success[B](value: B) extends Sum[Nothing, B] 

當我嘗試創建一個新的變量爲:

val s1: Sum[Int, Nothing] = Success(4) 

我有以下錯誤:

Error:(5, 41) type mismatch; 
found : Int(4) 
required: Nothing 
    val s1: Sum[Int, Nothing] = Success(4) 

爲什麼?

爲什麼這是工作:

val s1: Sum[Int, Int] = Success(4) 

回答

4

因爲B是第二類型的參數,而不是第一:

val s1: Sum[Nothing, Int] = Success(4)