oxb*_*kes 39
阅读Daniel Spiewak关于Scala 的精彩博客系列.使用Scala,您可以保留:
但是你可以编写Scala代码:
Ste*_*lou 17
另外,请看看Scala网站上最近的新闻帖:" 研究:编程风格和生产力 ".
在他的论文中,Gilles Dubochet描述了他如何使用眼动追踪调查编程风格的两个方面.他发现使用for-comprehension和map的算法平均快30%,就像在Scala中那样,而不是那些具有Java迭代while循环的算法.
新闻项目的另一个重要引用:
在Scala为电力贸易公司撰写关键任务项目的Alex McGuire对Scala说:"简洁意味着我可以在一个屏幕上看到更多的程序.你可以得到更好的概述.当我有一些数学模型可以用Java我必须保留两个模型,数学模型本身,第二个模型是如何用Java实现它.使用Scala一个模型,数学模型,将会更有效率."
你读了帖子的其余部分和那里的其他链接项目.
cla*_*lay 12
从我有限的经验中,我可以用非常简单的语言命名一些极其明确的观点:
属性.C++和Java有一个公共getter/setter函数"property"的概念,它包含了一个内部类变量,导致了大量的样板代码.C#将其形式化为一种真正的语言特性,并通过自动实现的属性减少了C#3.0中的大部分样板.Scala类将简单属性定义为常规只读val或读/写变量.该类可能稍后选择使用get或get/set方法替换它们而不影响客户端代码.为此,Scala提供了最优雅的解决方案,具有最少的语言功能和复杂性.
数组使用常规泛型.在Java/C#中,泛型作为一种思想被拴在一起,并且是完全独立的但是与数组有重叠的行为.
Scala具有不变的"val"作为一流的语言特征.实际上,val类似于Java最终变量:顶部引用是不可变的,但内容可能会发生变异.
Scala允许块,for-yield循环和大括号中的代码返回一个值.在许多情况下,这是非常优雅的.一个非常小的优点是,这消除了对单独的三元运算符的需求.
Scala具有单例对象而不是C++/Java/C#类静态.这是一个更清洁的解决方案
模式匹配.对象拆包.在很多情况下非常好.
原生元组.
持久不可变集合是默认集合并内置于标准库中.
我不确定您是否可以在Java程序中轻松使用Scala,例如"从Java类调用Scala类".
您可以按照" 混合Java和Scala "一文进行尝试.
相关摘录:
问题是Java和Scala编译步骤是分开的:您不能一次编译Java和Scala文件.
如果您的Java文件都没有引用任何Scala类,则可以先编译所有Java类,然后编译Scala类.
或者,如果您的Scala文件都没有引用任何Java类,那么您可以反过来这样做.
但是,如果您希望Java类可以访问您的Scala类,并且Scala类也可以访问您的Java类,那就是一个问题.Scala代码可以很容易地直接调用Java代码,但有时从Java代码调用Scala代码比较棘手,因为从Scala到字节码的转换并不像Java那么简单:
有时Scala编译器会在符号中添加字符或进行其他更改从Java调用时必须显式处理.
但是Scala类可以实现Java接口,并且该类的实例可以传递给期望接口实例的Java方法.
然后,Java类在该实例上调用接口方法,就像它是Java类实例一样.
当然,正如Danup Spiewak的Roundup:Scala for Java Refugees所述,情况正好相反.
| 归档时间: |
|
| 查看次数: |
24570 次 |
| 最近记录: |