【发布时间】:2016-02-23 19:02:49
【问题描述】:
我在 Scala 中的类声明有问题:
class Class2[
A,
B <: Class2[A,B,C],
C <: Class3[A,C]
]
class Class3[
A,
C <: Class3[A,C]
]
class Class1[
A,
B <: Class2[A,B,C],
C <: Class3[A,C]
](obj : B) { ... }
这是正确的声明,但每次我想创建该类的实例时,我都需要手动指定参数 A 和 C。喜欢:
val X = Class1[Type1, Type2, Type3](correct_object_of_Type2)
如果我尝试val X = Class1(OBJ) 会导致错误...types [Nothing, B, Nothing] do not conform to [A, B, C]...
为什么 Scala 不从 B 推断类型 A 和 C?以及如何为 Scala 编译器声明类,以便它能够自己指定 A、C?谢谢
编辑
对不起,最初的任务是正确定义 Class1,如:
class Class2[
A,
B <: Class2[A,B,C],
C <: Class3[A,C]
]
class Class3[
A,
C <: Class2[A,C]
]
??class Class1(obj : Class2) { ... }??
...所以调用val x = Class1(obj) 是正确的,其中obj: Class2。当我尝试如上所述定义它时,我收到错误Class2 takes type parameters。有什么想法吗?
抱歉不准确。
【问题讨论】:
标签: scala user-defined-functions generic-programming