我需要在方法中检查一些非平凡类型的证据,并且暗示可以完成工作。它看起来像是:
trait Cunning[T] {
private[this] trait Path[U] extends Function[U,T]
private[this] implicit def route1 : Path[List[T]] = ...
private[this] implicit def route2 : Path[List[(T,T)]] = ...
def apply[U](arg : U)(implicit path : Path[U]) : T = path(arg)
}
我想要的是在没有额外导入的情况下调用此方法:
val cunning : Cunning[Int] = ....
val out = cunning(List(1,2,3))
这显然会失败,因为所有需要的隐式转换都在狡猾的对象中,我应该在使用之前导入它们。它很烦人。
我想以某种方式修改cunning定义,因此隐式使用不会逃避其范围,并且需要从用户导入零。你能建议我这样做吗?