0

给定一个参数化类型:

trait Document[S]

我想为嵌入式解释器绑定 this 的实例,例如

def test[S](doc: Document[S]) = tools.nsc.interpreter.NamedParam("document", doc)

这需要 aTypeTag和 a ClassTagof Document[S]。请注意,我需要能够绑定完整类型,即Document[S]而不仅仅是Document[_].

我该怎么办?我想我会在文档中添加一些内容,例如

trait Document[S] {
   def tt: reflect.runtime.universe.TypeTag[Document[S]] = ???
   def ct: reflect.runtime.universe.ClassTag[Document[S]] = ???
}

(为什么我需要两个不同的标签来获取命名参数?)


编辑:以下使其编译

trait Document[S] {
  implicit def systemType: reflect.runtime.universe.TypeTag[S]
}

def test[S](doc: Document[S]) = {
  import doc.systemType
  tools.nsc.interpreter.NamedParam("document", doc)
}

但是我仍然Document[_]在解释器中绑定到,所以我的类型参数Document丢失了?!

4

0 回答 0