虽然在混合期间特质的顺序是完美的,但我如何以特定的方式强制他们的命令。 例如,我有这个:
val t = new Wink with Dash with Right with Left
我想提出条件,例如if Right NOT Left
,然后说Dash COMES FIRST THEN Right OR Left
答案 0 :(得分:3)
实现对混合特征的方式的这种限制的一种方法如下:
trait Dash[T <: Dash[T]]
trait Right extends Dash[Right]
trait Left extends Dash[Left]
val t = new Wink with Dash[Right]
这样,[T <: Dash[T]]
迫使我们立即提供右或左特征。 (右或留在您的要求中)
另一方面由于扩展名extends Dash[Right]
,在不使用Dash的情况下,不能混合使用右或左特征。 (在您的要求中,首字母首先)
听起来好像是在检查某些条件以便在右或左之间做出决定。这可以这样做:
val t = if (p) new Wink with Dash[Right] else new Wink with Dash[Left]