【发布时间】:2011-03-11 22:27:32
【问题描述】:
有没有办法让这个工作? (斯卡拉 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?
【问题讨论】:
-
我对 Lift DI 问题的最终解决方案是使用导入而不是依赖的隐式参数。详情:scala-notes.blogspot.com/2011/03/…
标签: scala dependency-injection lift implicit-conversion