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