【发布时间】:2017-07-06 19:27:23
【问题描述】:
我试图概括一种提供类型安全 API 的方法,如下所示:
abstract class AbstractCommand {
type T = this.type
def shuffler(s: T => Seq[AbstractCommand])
}
class TestCommand extends AbstractCommand {
override def shuffler(s: (TestCommand) => Seq[AbstractCommand]): Unit = ??? //error
}
我希望函数参数的预期类型在这个层次结构中是最具体的。但它没有用。
有没有办法在 Scala 中做类似的事情而不引入一些辅助类型参数?
【问题讨论】:
-
“最衍生”是指“最具体”吗?
-
@stefanobaghino 是的
-
你可以试试F-bounded polymorphism
-
@dk14 我也这么认为,但我相信 St.Antario 想避免类型参数。
-
@stefanobaghino 作为折衷方案,您可以改用类型成员(但仍必须在派生类中手动分配它们)