4
當我創建的REPL一個小地圖,它告訴我,它的類型是immutable.MapScala REPL打印的類型是什麼?
scala> Map(1->1, 2->2)
res8: scala.collection.immutable.Map[Int,Int] = Map((1,1), (2,2))
這並不是全部的真相不過,因爲在這種情況下
scala> Map(1->1, 2->2).getClass
res9: java.lang.Class[_] = class scala.collection.immutable.Map$Map2
如何Scala會決定打印什麼類型的表達式?
其中靜態類型是評估的表達式的結果類型,動態類型是實現該類型的實際類? – 2011-04-20 21:03:40
啊,一個古老,快速和骯髒的答案後面跟着編輯技巧,現在讓我的問題看起來很愚蠢! – 2011-04-20 21:05:52
最簡單的情況下,給定的靜態類型與方法定義中的返回類型完全相同。否則(具有推斷的類型參數的方法,依賴於隱式參數的返回類型等),您必須檢查類型推斷引擎的細節,因爲事情會變得非常複雜。動態類型由正在執行的方法體內發生的事情給出(這裏,相關的方法是'Map.apply()')。 – 2011-04-20 21:06:53