J'ai un trait qui fait ce qui suit:Abstracting Comportement commun avec traits Scala
trait MyTrait[T] {
def doSomething(elems: Seq[T])
}
J'ai alors une usine qui créerait des instances des mises en œuvre de ce trait:
object MyTrait {
def apply(): MyTrait = {
new StringTrait()
}
}
maintenant l'implémentation concrète ressemble à ceci:
class StringTrait extends MyTrait[String] {
def doSomething(elems: Seq[String]) = {
// some generic logic here
// some specific logic here (this code bit depends on the type of implementation)
// some generic logic here
}
}
Comment pourrais-je maintenant faire StringTrait tel que je passe dedans comportement spécifique de lui et ayant la logique générique définie dans une classe abstraite? Une façon serait de passer le comportement en tant que thunk, mais cela signifierait que je dois modifier ma méthode doSomething (...) pour prendre un paramètre supplémentaire que je préférerais éviter.