如果您使用implicitly
它,只需在范围内"显式"提供隐式值.所以你的isItCute
方法应该是以下两种变体之一:
def isItCute[A: CuteChecker](a: A) = implicitly[CuteChecker[A]].isCute(a) def isItCute[A](a: A)(implicit cc: CuteChecker[A]) = cc.isCute(a)
接下来,您需要一个隐式实例Cat
.这implicit class
对你没有帮助,因为它需要一个非隐式的类型值Cat
.您可以看到此方法是错误的,因为从不使用构造函数参数.你可以使用implicit object
:
implicit object CatCuteChecker extends CuteChecker[Cat] { def isCute(c: Cat) = true }
最后,您在object中提供了implicits CuterImplicits
.要使它们可见Main
,您需要导入内容:
object Main extends App { import CuterImplicits._ CheckingForCuteness.isItCute[Cat](Cat("funny")) }