Voici mon problème:Scala implicits et Dérogations problèmes
trait Caller {
type EntityType
def parseEntity(entity: String): EntityType
}
trait IntCaller extends Caller {
implicit def strToInt(s: String) = s.toInt
override type EntityType = Int
override def parseEntity(entity: String): EntityType = entity
}
trait DoubleCaller extends Caller {
implicit def strToDouble(s: String) = s.toDouble
override type EntityType = Double
override def parseEntity(entity: String): EntityType = entity
}
object main {
def main(args: Array[String]): Unit = {
val intCaller = new IntCaller{}
val doubleCaller = new DoubleCaller{}
println("Result is: " + intCaller.parseEntity("5"))
println("Result is: " + doubleCaller.parseEntity("5.0"))
}
}
Comme vous pouvez le voir, je ne cesse de répéter le code: méthode parseEntity
. Si je voulais ajouter un FloatCaller
je dois réécrire parseEntity
même si sa mise en œuvre serait le même.
Comment puis-je écrire le implentation du parseEntity dans le Caller
, de sorte que je ne dois pas écrire le même code dans les traits de l'enfant encore et encore?
Clause de non-responsabilité: Ceci est une simplification d'un vrai problème que j'ai avec SprayJsonSupport
de akka.http.scaladsl.marshallers.sprayjson
.