2017-04-03 114 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)