2014-02-17 50 views
2

Scala reflection guide寫入以下:什麼是編譯器在Scala 2.10中生成的隱式值?

與艙單,可以有效請求編譯器 生成TypeTag。這是通過簡單地指定TypeTag [T]類型的隱含的證據參數來完成的。如果編譯器在隱式搜索期間未能找到匹配隱式值的 ,則它會自動生成一個TypeTag [T] 。

This StackOverflow的答案很好地解釋了「隱式證據」的概念。但是,它仍然不完全清楚這意味着編譯器將 生成 TypeTag [T]。

  • 這是否表示這是「隱式證據」搜索的特例?即當編譯器執行隱式搜索時,TypeTag類[T]是以特殊方式處理的嗎?我試圖在Scala反射API中查找隱式參數值,但是我沒有找到任何提供TypeTag [T]的參數值,所以我假設TypeTag [T]隱式參數來自編譯器內部(如文檔所述)。所以類名TypeTag [T]被硬編碼到編譯器的源代碼中。這個假設是否正確?

  • 是否在某處記錄了隱式值的自動生成?換句話說,是否有文檔列出所有自動生成的隱含證據?我在Scala language specification(版本2.9)中沒有找到TypeTag [T]。那裏最接近TypeTag [T]的概念是Manifest,它們是自動生成的隱式參數。 Manifests是Scala 2.9中唯一自動生成的隱式值參數嗎?

回答

相關問題