给定参数化类型:
trait Document[S]
我想为嵌入式解释器绑定一个这样的实例,例如
def test[S](doc: Document[S]) = tools.nsc.interpreter.NamedParam("document", doc)
这需要TypeTag
和ClassTag
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
的类型参数丢失了?!