一尘不染

Java关闭后的Scala优势

java

随着闭包被添加到Java中,Scala作为语言选择优于Java的优势是什么?

有人可以详细说明任何优势吗?


阅读 167

收藏
2020-12-03

共1个答案

一尘不染

除了闭包(Java似乎没有闭包之外),这是Java中缺少的Scala功能列表。我将在此处省略库,而将重点放在语言本身的功能上。这无论如何都不是全面的,但我认为它包含了大笔票。

  • 隐式参数/转换
  • 模式匹配,案例类
  • 类型推断(某些)
  • 种类较多的类型(对类型构造函数的抽象)
  • 单调的for理解
  • 方差注释
  • 行为界面(特征)
  • 默认和命名参数
  • 统一的方法和运算符(方法可以用作中缀运算符,运算符可以重载,因为它们只是方法)
  • 统一的类型层次结构;没有原始类型
  • 属性而不是getter和setter
  • 抽象值
  • 一流的不可变引用(val与一样容易声明var
  • 按名称(懒惰)术语(也许Java闭包使之易于表达)
  • 一些尾调用递归优化
  • 抽象类型
  • 类型别名
  • 自我类型
  • 路径相关类型
  • 结构类型
  • 类型 归属 ,从类型来区分 _铸造
  • 重命名进口
  • 一流的模块(对象)
  • 一流的套餐
  • 泛型泛型(清单
  • 定界的延续

这些构建块可以实现一些很酷的辅助构造:

  • 类型类(通过隐式参数和更高种类的类型)
  • Pimp我的书架”模式(通过隐式转换)
  • 内部DSL(通过运算符重载和infix方法)
  • 解析器组合器(由高阶函数启用,并由infix方法修饰)
  • 生成器,协程,自定义控制结构(通过定界延续)
  • 类型级别的编程(通过更高种类的抽象类型)
  • 依赖注入框架的过时(通过Cake模式

最后,我要提到的是Scala具有REPL(读取-评估-打印-循环)功能-并不是语言本身的功能,但是拥有它非常好!

2020-12-03