Also mein Code sieht wie folgtkönnen nicht impliziten Wert finden
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))
}
Jedoch hat ich den Fehler, dass Compiler nicht in der Lage ist impliziten Wert für Gleichung [MyClass] zu finden. Hier ist der Fehler, den ich bekomme.
Error:(38, 19) could not find implicit value for parameter eq: typeclasses.Eq[typeclasses.MyClass.type]
println(equality(MyClass, MyClass))
Sollte es Eq [MyClass] wurde noch nicht gefunden, da ich die MyClass-Objekt in App1 importieren und haben EqMyClass dort definiert? Muss ich das MyClass-Objekt auch in App1 importieren? Mein Verständnis war, dass scala Companion-Objekte von Arg-Typen untersucht, um implizite Defs zu finden?
Danke!
Ich würde typeclasses über 'implizite val x = neue Eq [MyClass] {...}' schreiben – Reactormonk