它的工作正在進行中,小心不要打破Scal JVM和.NET之間的語義。
我問這個問題早在2011年斯卡拉工具郵件列表和答案被米格爾·加西亞,他勾勒出大畫面給出:
的一些話:
(1)什麼目前Scala.Net預覽。如您所注意到的,刪除階段也作爲管道的一部分運行。這是預覽版本的「功能」 ,必須包含「功能」 ,因爲對CLR泛型的支持尚未完成(更多信息,請參閱下面的 )。然而,在Scala.Net中運行JVM風格的 有一個很大的優勢:依賴於 的所有Scala程序都可以在.Net上編譯,而不是等待CLR泛型的 準備就緒。那些依賴於Java JDK 的程序也可以編譯,但需要遵循 問題[1]中的JDK API的IKVM支持。
(2)支持Scala.Net中的CLR泛型。 支持它的主要動機是獲得與現有組件的互操作性。在獲得互操作性的 中,將不會忽略來自Scala語義的 。換句話說,任何有效的Scala程序都將運行 ,並在JVM和.NET上產生相同的結果。這爲我們帶來了 正在進行的工作[2]。最初的原型只處理Scala的C# 子集。所以現在我正在處理其餘的問題。這比最初預期的 更多的工作,但覆蓋整個語言是很重要的。
有關與.NET程序集互操作的更多註釋,請參閱 特定的本機問題。是的,CLR程序集可以使用 「native int」(不同CPU上的不同大小),P/Invoke 使用.dll等導出的C函數。 Scala.Net不打算做 那低級的詭計。感興趣的裝配互操作性爲「公共語言規範」級別的 ,即通常從任何C#,VB.NET等編譯器(通常爲「 ,除非使用」[DllImport]「屬性和相關C++ - ISMS)。
從CLI規格報價:
---開始報價---公共語言規範(CLS) - CLS的是語言的設計者和框架之間的協議(即 類庫)設計師。它指定了CTS的一個子集(通用 類型系統)和一組使用約定。 語言通過實現CTS的至少那些部分是 CLS的一部分,爲他們的用戶提供訪問框架的最大能力。類似地,如果公共導出的方面(例如,類,接口,方法, 和字段)僅使用屬於CLS並且遵守CLS約定的類型,則框架將被最廣泛地使用。 ---結束引用---
看到整個線程:
https://groups.google.com/forum/?fromgroups#!topic/scala-tools/JDjstK1_uvM
M.加西亞相關[文章](http://lampwww.epfl.ch/~ magarcia/ScalaNET /幻燈片/ TourCLRGenerics。pdf)和[狀態更新](http://lampwww.epfl.ch/~magarcia/ScalaNET/slides/2011-09-06-GenericsGettingCloser.pdf)。但這些涉及執行的細節;很難獲得大局。 – 2012-07-23 06:26:37