2013-10-22 70 views
2

好吧,我遇到這個問題的真正原因是我的ScalaTests無法編譯,因爲我定義了測試範圍內的一些類,這些類調用期望與TypeTag一起工作的另一個類文件。請注意,因爲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測試2 = TypeTaggerB

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

reflect.runtime.universe.TypeTag[B])chorle.scala.testarea.TypeTagger[B] in object TypeTagger. Unspecified value parameter tt. val test2 = TypeTaggerB

     ^

回答

0

TypeTag這似乎與WeakTypeTag,而不是要工作TypeTag(也改變typeTagweakTypeTag)。我不知道爲什麼真的;沒有找到任何有關這方面的具體文件。

+0

感謝您發現這一點,我希望我能發現更多,但我不確定發生了什麼。你知道WeakTypeTags是否有任何運行時使用,或只是爲宏操作設計的? – LaloInDublin

相關問題