Scala随着时间的推移删除了哪些语法选项/语言功能(以及为什么)?

soc*_*soc 11 syntax language-features programming-languages scala language-design

标题几乎总结了我的问题.

案例类继承的弃用和删除是一个非常新的,我想知道在此之前哪些事情已被删除/实质性更改.我记得valfor循环和一些不同的名称object以及一些requires关键字.

我希望看到代码示例,说明事情的使用方式/以后如何更换它们,以及实际版本何时发生以及理由为何!

PS:每个答案一个项目似乎是个好主意!

soc*_*soc 5

案例类继承是一个短暂的特性:它在2.7中引入,在2.8/2.9中弃用,最后在2.10中删除.

例:

case class Foo(a: Int, b: Int)
case class Bar extends Foo(42, 43)
Run Code Online (Sandbox Code Playgroud)

问题是自动提供的等式实现在继承方面并没有真正起作用,因此删除了此功能.

删除case类继承也有一个很好的效果:它将允许product***通过继承具体ProductN特性来提供更好的类型化方法:

val f = Foo(1,2).productIterator
f: Iterator[Any] = non-empty iterator // < 2.10
f: Iterator[Int] = non-empty iterator // 2.10 with -Xexperimental
Run Code Online (Sandbox Code Playgroud)


agi*_*eel 3

在 Scala 2.7 中可以声明类型的事物int(没有大写的“I”)。由于 Scala 不支持原始值的概念,并试图尽可能与所有内容保持一致,因此该“功能”已被弃用。

  • Afaik 大多数社区成员不喜欢这样的事实:有些类型以小写字母开头,有些以大写字母开头,他们“标准化”在 2.8 左右的大写字母周围...... (2认同)