好吧,我遇到这个问题的真正原因是我的ScalaTests无法编译,因为我在测试范围内定义了一些类,这些类调用另一个期望使用TypeTags的类文件。请注意,因为B类在我的“测试”中(假设这是一个scala测试调用),所以typetag不再可行。我怀疑也许我不应该在本地范围内的匿名课上尝试这个,但有人可以帮我理解吗?感谢
import scala.reflect.runtime.universe._
import scala.Symbol
class TypeTagger[T:TypeTag] {
val tt = typeTag[T]
}
object TypeTagger {
def apply[T]()(implicit tt:TypeTag[T]) = new TypeTagger[T]
}
object TestRunTypeTagger extends App {
class A
val test = new TypeTagger[A]
{
class B
val test2 = TypeTagger[B]() //fails
}
}
错误: 没有TypeTag可用于B val test2 = TypeTaggerB
^ not enough arguments for method apply: (implicit tt:
reflect.runtime.universe.TypeTag [B])chorle.scala.testarea.TypeTagger [B] 在对象TypeTagger中。未指定的值参数tt。 val test2 = TypeTaggerB
^
答案 0 :(得分:0)
似乎可以使用WeakTypeTag
代替TypeTag
(同时将typeTag
更改为weakTypeTag
)。我不知道为什么真的;找不到任何关于此的文件。