如何在定义的相同范围内使用隐式转换

时间:2016-09-22 05:57:07

标签: scala implicit-conversion implicit

我需要在方法中检查一些非平凡类型的证据,并且暗示可以完成工作。它看起来像是:

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定义,因此隐式使用不会逃避其范围,并且需要从用户导入零。你能建议我这样做吗?

0 个答案:

没有答案