繁体   English   中英

Scala中的依赖注入

[英]Dependency Injection in scala

我有个特质

trait Tt[T]{
   //tens of methods
}

class St{ tt: Tt[T] =>
  type T = //...
  //some methods
}

object St{
    def apply[T](tt: Tt[T]) = new St with tt //error
}

问题是Tt的对象是由库生成的。 有没有一种方法可以避免实施所有这数十种方法,而只是“注入实例”?

由于不能在类中定义类型变量声明,因此我不能仅将其作为参数传递。

无法将类型变量声明提取到type参数。

关于class St(val tt: Tt[St#T]) { type T = ... }

不过,您的apply还有其他内容: St希望Tt的类型参数与自己的类型T (您必须开始为这些类型使用更多字母),但是apply是用T参数化的,这是另一种不同的类型,恰好使用相同的字母。 因此, def apply[T](tt: Tt[T]) = new St(tt)将不会编译,因此需要def apply(tt: Tt(St#T)) = new St(tt)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM