gpt4 book ai didi

scala - Scala中隐式参数的通用容器的隐式转换

转载 作者:行者123 更新时间:2023-12-04 19:31:15 25 4
gpt4 key购买 nike

有没有办法使这项工作? (斯卡拉 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 依赖注入(inject)有关,真实代码如下所示:
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
  • 关于scala - Scala中隐式参数的通用容器的隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5279044/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com