/ / Scala - comment forcer un ordre spécifique de traits - scala, traits

Scala - comment forcer un ordre spécifique de traits - scala, traits

Tandis que l'ordre des traits se méttre pendant leur mélange alors comment je peux forcer leur ordre d'une manière spécifique. Par exemple, j'ai ceci:

val t = new Wink with Dash with Right with Left

et je veux mettre des conditions, comme if Right NOT Left et laissez dire Dash COMES FIRST THEN Right OR Left

Réponses:

3 pour la réponse № 1

Une façon d'appliquer de telles restrictions sur les façons de mélanger les traits est la suivante:

trait Dash[T <: Dash[T]]
trait Right extends Dash[Right]
trait Left extends Dash[Left]

val t = new Wink with Dash[Right]

Par ici, [T <: Dash[T]] nous oblige à fournir tout de suite le trait droit ou gauche. (Droite ou À gauche dans vos exigences)

Par contre à cause de l'extension extends Dash[Right], Le trait droit ou gauche ne peut être mélangé sans l'utilisation de Dash. (Tiret vient en premier dans vos exigences)

On dirait également que vous vérifiez certaines conditions pour pouvoir choisir entre Droite ou Gauche. Cela pourrait être fait comme ça:

val t = if (p) new Wink with Dash[Right] else new Wink with Dash[Left]