scala编译器中的Typer如何验证以下内容:
class D[T <: D[T]]
class E extends D[E]
Run Code Online (Sandbox Code Playgroud)
D类型参数的上限D [T]必须与E兼容.E型不等于D,因此将检查其基本类型D. 因为E的基类型和D的类型构造函数相等,所以必须检查边界.这是递归.该核心微积分不处理这种情况.
以下scala代码似乎有效:
class A[X]
class C[M[X] <: A[X]]
class Main
new C[A]
Run Code Online (Sandbox Code Playgroud)
我希望编译器在类型A上执行类型推断,但是在我尝试以下操作之后:
new C[A[Int]]
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
(fragment of Main.scala):11: error: this.A[Int] takes no type parameters, expected: one
println( new C[A[Int]] )
Run Code Online (Sandbox Code Playgroud) scala ×2