为什么以下代码不能编译?
appendChild
(标量2.12.8)
我遇到以下错误:
def test[T, C[_] <: Iterable[_]](x: C[T]) = {
val z: Iterable[T] = x
}
答案 0 :(得分:4)
由于T
中的x: C[T]
与T
中的z: Iterable[T]
不同,因此无法编译。如果您明确指定C[A] <: Iterable[A]
类型,它将进行编译。
T
有所不同,因为在函数签名中您使用的是higher kinded types,它宽松地声明: C是任何类型的类型构造函数。
类型的上限和下限与同类的上限不同。
PS:根据您要完成的任务,可能不需要更高种类的类型,而只是增加了复杂性。