Typetags在代码块范围内不起作用?

时间:2013-10-22 01:54:37

标签: scala

好吧,我遇到这个问题的真正原因是我的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

                         ^

1 个答案:

答案 0 :(得分:0)

似乎可以使用WeakTypeTag代替TypeTag(同时将typeTag更改为weakTypeTag)。我不知道为什么真的;找不到任何关于此的文件。