在Scala中为隐式参数隐式转换通用容器
发布时间:2020-12-16 10:01:37 所属栏目:安全 来源:网络整理
导读:有没有办法让这项工作? ( Scala 2.8.1) class Adef f(implicit a: A) = 0class Vendor[T](val v: T)implicit val vendor = new Vendor(new A)implicit def vendorToVal[T](implicit v: Vendor[T]) = v.vf 错误是:’从方法vendorToVal开始,为类型A分散隐式
有没有办法让这项工作? (
Scala 2.8.1)
class A def f(implicit a: A) = 0 class Vendor[T](val v: T) implicit val vendor = new Vendor(new A) implicit def vendorToVal[T](implicit v: Vendor[T]) = v.v f 错误是:’从方法vendorToVal开始,为类型A分散隐式扩展’ 这与Lift 2.2依赖注入有关,实际代码如下所示: class UserStore(implicit db: DbAccess) object DependencyFactory extends Factory { implicit val db = new FactoryMaker[DbAccess](Model) {} import db._ // implicit conversion would allow to remove this import implicit val userStore = new FactoryMaker[UserStore](new UserStore) {} } 这个问题与:Is there a way to implicitly convert an implicit parameter in Scala?有关 解决方法
这个问题是由vendorToVal方法引起的 – 当我在隐式类型参数化方法中使用隐式参数时,我多次观察到相同的行为.不幸的是,我在2.8._中找不到简单而优雅的胶水.
一些与主题相关的有趣线程: > http://scala-programming-language.1934581.n4.nabble.com/scala-Why-is-this-a-diverging-implicit-td1998156.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |