java - Java 闭包后的 Scala 优势

标签 java scala closures

在 Java 中添加闭包后,作为语言选择,Scala 相对于 Java 的优势是什么?

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

最佳答案

除了闭包(Java 似乎并没有那么接近),这里列出了 Java 中缺少的 Scala 特性。我将省略这里的库,而专注于语言本身的特性。无论如何,这并不全面,但我认为它包含了大件元素。

  • 隐式参数/转换
  • 模式匹配、案例类
  • 类型推断(一些)
  • Higher-kinded types(类型构造函数的抽象)
  • 一元 for 推导式
  • 差异注释
  • 与行为(特征)的接口(interface)
  • 默认和命名参数
  • 统一方法和运算符(方法可以用作中缀运算符,运算符可以重载,因为它们只是方法)
  • 统一的类型层次结构;没有原始类型
  • 属性而不是 getter 和 setter
  • 抽象值
  • 一流的不可变引用(vals 与 vars 一样容易声明)
  • 按名称(惰性)术语(也许 Java 闭包会让这变得相当容易表达)
  • 一些尾调用递归优化
  • 抽象类型
  • 类型别名
  • self 类型
  • 依赖路径的类型
  • 结构类型
  • 类型 ascription ,区别于类型 casting
  • 重命名导入
  • 一流的模块(对象)
  • 一流的包
  • 具体化的泛型 (manifests)
  • Delimited continuations

这些构建 block 支持的一些很酷的二级结构:

  • 类型类(通过隐式参数和更高种类的类型)
  • Pimp My Library" 模式(通过隐式转换)
  • 内部 DSL(通过运算符重载和中缀方法)
  • 解析器组合器(由高阶函数启用并通过中缀方法变得漂亮)
  • 生成器、协程、自定义控制结构(通过定界延续)
  • 类型级编程(通过更高种类和抽象类型)
  • 依赖注入(inject)框架的过时(通过 Cake Pattern )

最后,我要提一下 Scala 有一个 REPL(读取-评估-打印-循环)-- 并不是该语言本身的真正特性,但拥有它真是太好了!

关于java - Java 闭包后的 Scala 优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3844745/

相关文章:

java - 使用java模拟对N个传感器进行计数

java - 使用 okHttp 发出 post 请求

java - 如何在谷歌服务插件更新后删除警告 "WARNING: API ' variant.getMergeResources( )' is obsolete"?

java - 字符串数组的返回语句给出奇怪的结果

scala - 与猫的三个列表的笛卡尔积

循环内的 JavaScript 闭包——简单实用的例子

JavaScript。对象的一个​​成员是否可以在不显式引用对象本身的情况下访问该对象的另一个成员?

scala - 取消选择已选择的选项

scala - 为什么我必须在 unapply 方法中返回 Some

ios - 使用函数类型或闭包来动态调用函数