【发布时间】:2019-02-20 18:12:16
【问题描述】:
我有一个要在子类中实现的具有大小比较功能的特征:
trait A {
def isLessThan(that: A): Boolean
...
}
class SubOfA() extends A {
...
override def isLessThan(that: SubOfA): Boolean = {
this.size < that.size
}
...
}
但是,该方法不是有效的覆盖,因为参数类型是 SubOfA 而不是 A。
我也尝试过将参数类型设为this.type,但是当我从抽象设置中调用该方法时,我无法使用A 类型的对象作为参数:
...
(foo: A, bar: A) => foo.isLessThan(bar)
这应该是类型 foo.type 而不是 A,它们是相同的,但我认为编译器还不知道这一点。
关于如何让这样的事情发挥作用的任何想法?我已经到处寻找答案,但找不到任何东西。也许我不知道该问什么问题。
【问题讨论】:
标签: scala comparison abstract traits