2

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

错误:没有可用于 B val test2 = TypeTaggerB 的 TypeTag

                       ^ not enough arguments for method apply: (implicit tt:

对象 TypeTagger 中的 reflect.runtime.universe.TypeTag[B])chorle.scala.testarea.TypeTagger[B]。未指定值参数 tt。val test2 = TypeTaggerB

                         ^
4

1 回答 1

0

它似乎可以使用 aWeakTypeTag而不是 a TypeTag(也更改typeTagweakTypeTag)。我真的不知道为什么;找不到任何关于此的文档。

于 2013-10-22T04:38:46.650 回答