2010-05-21 46 views

回答

14

通常,當您在庫類的源代碼中看到throw new Error()時,它表示編譯器正在干預並通過橋接到平臺的設施來實現該方法的一個點(請記住,這可能是Java或.NET) 。

Array SID解釋了在Scala 2.7.x中如何處理數組以及它們在2.8中如何變化。如果您調用map,編譯器會將該對象神奇地轉換爲BoxedArray

在2.8,陣列研究Scala集合框架的整合主要是與使用的正常漢語語言特徵處理 - 隱式轉換從Array[T]WrappedArray[T]ArraySeq[T],取決於上下文,和Manifest[T]類型的隱式參數以支持的創作通用類型的數組T。陣列indexing,lengthupdate仍然顯示爲throw new Error()Array#map不再存在,相反,您可以在WrappedArrayArraySeq上找到這個常規方法。

UPDATE

如果您有興趣瞭解這個神奇的編譯器定義,看看斯卡拉2.8化身Cleanup.scala

4

外貌就像它只是虛擬代碼一樣,因爲Scala數組真的是Java代碼。

+0

與「native」類似嗎?在java中,我的意思是,就像...... *嘿,別擔心,我知道下面該做什麼?* – OscarRyz 2010-05-21 21:30:24

+0

這是我的猜測,儘管我不確定。 – pdbartlett 2010-05-22 00:11:04

相關問題