它的工作正在进行中,小心不要打破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