我使用case class Equals[A >: B <: B, B]
来检查类型等价,例如,
scala> Equals[Int, Int]
res0: Equals[Int,Int] = Equals()
scala> Equals[Int, String]
<console>:10: error: type arguments [Int,String] do not conform to method apply's type parameter bounds [A >: B <: B,B]
Equals[Int, String]
但是当我将Equals案例类重新声明为:
时scala> case class Equals[A <: B >: B, B]
<console>:1: error: ']' expected but '>:' found.
case class Equals[A <: B >: B, B]
我想知道为什么[A >: B <:B, B]
有效,但[A <: B >: B, B]
没有。
答案 0 :(得分:0)
根据Scala Reference Specification项 4.4类型参数:
TypeParam :: =(id |'_')[TypeParamClause] ['&gt;:'Type] ['&lt;:'Type] [':'类型]
绑定序列为A >: Lover <: Upper
,但不是A <: Upper >: Lover