【发布时间】:2017-04-26 23:45:51
【问题描述】:
假设我有一个混合特征,我想定义一个方法,其返回类型取决于特征混合到的对象的最终类型...
trait MultiUnit extends Quantity {
this: Order =>
def split(unmatchedQuantity: Long): (???, ???)
}
...例如,如果我有一个混入 MultiUnit 的案例类,我希望返回类型如下所示...
case class MultiUnitLimitOrder(price: Double, quantity: Long) extends Order with MultiUnit {
def split(unmatchedQuantity: Long): (MultiUnitLimitOrder, MultiUnitLimitOrder) = ???
}
...如果可能的话,我更喜欢使用类型成员而不是类型参数的解决方案。
【问题讨论】:
-
正则 F-Bound 多态性会将
MultiUnit的类型绑定为上限。这是否足够,或者您是否试图将其限制为与MultiUnit混合的特定类型? -
@YuvalItzchakov 我认为上限就足够了,但我不完全确定......
标签: scala polymorphism mixins