case class Cat(name: String)
object CuterImplicits {
implicit class CatCuteChecker(c: Cat) {
def isCute(c: Cat) = true
}
}
trait CuteChecker[A] {
def isCute(a: A): Boolean
}
object CheckingForCuteness {
def isItCute[A](a: A) = implicitly[CuteChecker[A]].isCute(a)
}
object Main extends App {
CheckingForCuteness.isItCute[Cat](Cat("funny"))
}
come risolvere il problema:non riusciva a trovare valore implicito per il parametro e
Error:(17, 37) could not find implicit value for parameter e: CuteChecker[A] def isItCute[A](a: A) = implicitly[CuteChecker[A]].isCute(a) ^
domanda per favore in 'isItCute' in main passaggio un oggetto di tipo' Cat'. La firma di 'def isItCute [A: CuteChecker] (a: A)' sta ricevendo un 'a' che dice di tipo' [A: CuteChecker] 'quindi sembra che voglia ricevere un' CuteChecker' a meno che io non capisco cosa significa "A: Cutechecker". come posso ricevere un tipo diverso da 'Cat'? non vedo che ho alcuna conversione tra di loro tutto quello che ho è un implicito CuteChecker per Cat – Jas
'def foo [A: Bar] (x: A)' è zucchero sintattico per 'def foo [A] (x: A) (barra implicita: Bar [A]) '. Se vuoi un 'CuteChecker' per un tipo diverso da' Cat' devi definirne uno e portarlo nel campo di applicazione come 'CatCuteChecker'. –