Scala

时间:2015-05-21 19:15:05

标签: scala existential-type

以下存在类型声明之间有什么区别:

trait A[T <: A[T]]

1. def existentialErr(arg: A[T forSome{type T <: A[T]}]): Unit =()
2. def existentialOk(arg: A[T] forSome{type T <: A[T]}): Unit =()

第1点产生以下编译时错误:

  

类型参数[T forSome { type T <: packagename.A[T] }]不符合特征A的类型参数边界[T <: packagename.A[T]]

第2点编译没有问题。

一般来说,这个问题非常类似于以下未解答的问题: Confusion with existential types in Scala

转载于 Scala 2.11.6

UPD:Travis Brown提供了答案 here

0 个答案:

没有答案