随着 Java 中添加了闭包,作为语言选择,Scala 相对于 Java 的优势是什么?
有人可以详细说明一下有什么优点吗?
除了闭包(Java 看起来还没有)之外,这里列出了 Scala 中 Java 所缺少的功能。我将在这里省略库并专注于语言本身的功能。无论如何,这并不全面,但我认为它包含了大件物品。
- 隐式参数/转换
- 模式匹配、案例类
- 类型推断(一些)
-
高等类型 https://lirias.kuleuven.be/bitstream/123456789/186940/4/tcpoly.p=(类型构造函数的抽象)
- Monadic
for
理解力
- 方差注释
- 与行为(特征)的接口
- 默认参数和命名参数
- 统一的方法和运算符(方法可以用作中缀运算符,运算符可以重载,因为它们只是方法)
- 统一类型层次结构;没有原始类型
- 属性而不是 getter 和 setter
- 抽象值
- 一流的不可变引用(
val
s 很容易声明为var
s)
- 名字(惰性)术语(也许 Java 闭包会让这变得相当容易表达)
- 一些尾调用递归优化
- 抽象类型
- 类型别名
- 自我类型
- 路径依赖类型
- 结构类型
- Type 归属 https://stackoverflow.com/questions/3412068/what-are-the-differences-between-asinstanceoft-and-o-t-in-scala,从类型上区分casting
- 重命名导入
- 一流的模块(对象)
- 头等舱套餐
- 具体化泛型(体现 http://www.scala-blogs.org/2008/10/manifests-reified-types.html)
- 分隔延续 http://www.scala-lang.org/node/2096
这些构建块支持一些很酷的辅助结构:
- 类型类(通过隐式参数和更高级的类型)
- The "拉皮条我的图书馆” http://www.artima.com/weblogs/viewpost.jsp?thread=179766模式(通过隐式转换)
- 内部 DSL(通过运算符重载和中缀方法)
- 解析器组合器(由高阶函数启用并通过中缀方法变得漂亮)
- 生成器、协程、自定义控制结构(通过分隔延续)
- 类型级编程(通过高级类型和抽象类型)
- 依赖注入框架的过时(通过蛋糕图案 http://jonasboner.com/real-world-scala-dependency-injection-di/)
最后,我要提到 Scala 有一个 REPL(读取-评估-打印-循环)——实际上并不是语言本身的功能,但拥有它真是太好了!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)