gpt4 book ai didi

scala - Scala 类型系统中的错误?

转载 作者:行者123 更新时间:2023-12-04 16:22:30 25 4
gpt4 key购买 nike

以下 Scala 代码似乎有效:

class A[X]
class C[M[X] <: A[X]]

class Main

new C[A]

我希望编译器对类型 A 执行类型推断,但是在我尝试了以下操作之后:
new C[A[Int]]

我收到以下错误消息:
(fragment of Main.scala):11: error: this.A[Int] takes no type parameters, expected: one
println( new C[A[Int]] )

最佳答案

让我们看看这在简单的英语中意味着什么。

class A[X]

意思是:让 A 成为一个接受一个类型参数的类。
class C[M[X] <: A[X]]

意思是:让C是一个接受一个类型参数的类,它应该是一个接受一个类型参数的类,参数化,是类A的子类,参数化了相同的类型。

当你写
new C[A]

你是说:用 A 作为参数创建一个 C 的实例。 A 是否符合上述标准?是的,它是一个接受一个类型参数的类,并且参数化它是它自身参数化的子类。

然而,当你写
new C[A[Int]]

您尝试提供给 C 的类型参数 A[Int] 不符合条件: A[Int] 不接受任何类型参数,编译器会亲切地告诉您。 (而且它也不是 A[X] 的子类。)

关于scala - Scala 类型系统中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4614376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com