donc mon code se présente comme suitImpossible de trouver la valeur implicite
package typeclasses
trait Eq[T]{
def == (t1: T, t2: T) : Boolean
}
case class MyClass()
object MyClass {
implicit object EqMyClass extends Eq[MyClass] {
override def ==(t1: MyClass, t2: MyClass): Boolean = true
}
}
object App1 extends App{
import Tree._
import MyClass._
def equality[T](t1: T, t2: T)(implicit eq: Eq[T]): Boolean = eq.==(t1, t2)
//println(equality(Node(1), Node(2)))
println(equality(MyClass, MyClass))
}
Cependant j'obtiens l'erreur que le compilateur ne peut pas trouver la valeur implicite de l'équation [MyClass]. Voici l'erreur que je reçois.
Error:(38, 19) could not find implicit value for parameter eq: typeclasses.Eq[typeclasses.MyClass.type]
println(equality(MyClass, MyClass))
devrait-il pas avoir trouvé l'équation [MyClass] depuis que j'importer l'objet MyClass dans App1 et ont EqMyClass défini là-dedans? Aussi ai-je même besoin d'importer l'objet MyClass dans App1? Ma compréhension était que scala regarde les objets compagnons de types d'arg pour trouver des défauts implicites?
Merci!
J'écrirais typeclasses via 'implicit val x = new Eq [MyClass] {...}' – Reactormonk