Je voudrais implémenter un implicite générique pour une classe qui peut être surchargée. Comme ce qui suit:Construire un implicite substituable
tooling.scala
package tooling
case class Tool(msg: String)
class Toolkit{
def usingTool(source:String)(implicit tool:Tool){
println(s"[$source] using tool: ${tool.msg}")
}
}
user.scala
package user
class User{
val toolkit = new Toolkit()
def usingGenericTool(){
toolkit.usingTool("from generic usage")
}
def usingSpecificTool(){
implicit lazy val tool = Tool("shovel")
toolkit.usingTool("from generic usage")
}
}
Si je définis un Tool
implicite générique dans la mise en œuvre d'un objet compagnon ou d'un trait, je reçois l'avertissement cet outil et le générique implicite sont ambiguous implicit values
.
Comment puis-je définir un valise implicite générique qui peut encore être substitué dans la portée d'une méthode et réutilisé dans diverses classes?
Je ne veux pas, puisque je vais appeler cette méthode plusieurs fois – dstibbe
Pour autant que je sache, il n'y a pas de mécanisme de priorité pour les implicits définis dans la même classe. Pour implicits dans la hiérarchie de classe - j'ai mis à jour ma réponse. – Maxim
Mais si je définis l'implicite dans le trait Test, comme vous l'avez montré dans votre exemple, JE NE PEUX PAS définir un implicite dans le corps de la méthode de la classe Test. – dstibbe