加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在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
> http://www.scala-lang.org/node/6847

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读