这是我的问题。Scala提供子类功能的类型信息
我有一个抽象类,它定义了一个类型参数作为输入和输出的方法。我希望子类在子类化时提供类型信息,但我希望以不参数化整个类的方式进行操作。
一些我想要的伪代码。
abstract class A {
def foo[T](t: T): T
}
class B() extends A {
override foo[Int](t: Int): Int = t + 1
}
class C() extends A {
override foo[Double](t: Double): Double = t + 1.0
}
如何传递子类别的类型信息?我看着类似的问题。他们用自我类型,类型类和抽象类型来解决这个问题。
感谢
如果我尝试从外部使用foo函数并将其传递给'foo(t)',其中t被定义为'T <:A',我得到'类型不匹配;预期t.T;实际T' – zaxme
你是什么意思“从外面传递”?您需要在创建'B'和'C'的实例时定义类型。 –
'class D [T <:A] def blah(t:T):T = { t.foo(t) } }' – zaxme