iev*_*sha 11 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 =()
Run Code Online (Sandbox Code Playgroud)
第1点生成以下编译时错误:
类型参数
[T forSome { type T <: packagename.A[T] }]不符合特征A的类型参数边界[T <: packagename.A[T]]
点2编译没有问题.
一般来说,这个问题与以下未解答的问题非常类似: Scala中与存在类型的混淆
转载于Scala 2.11.6
UPD:Travis Brown 在这里提供了答案
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |