想象一下,我有一个特点:
trait A {
type Elem
def list(e: Elem): List[Elem]
}
是否有可能以某种方式创建一个延伸两次的对象?
我知道你不能两次继承相同的特性,但它可以(在某些情况下)可以有类似的东西:
trait B extends A
object Server extends A with B {
}
那么,是否有可能以某种方式为A
中的特征成员B
添加别名?例如。那么在Server
我可以设置A.Elem = Int
,B.Elem = String
并让scala使用方法重载来调用相应的list
函数吗?
我的用例是我构建了一个HTTP端点,它接受表单类的特定实现。但是,我想允许它处理几个不同的表单类(例如DetailedRegistration
,SimpleRegistration
)并重用相关的逻辑。