Scala将"const classes"作为Fantom的障碍是什么?

Ada*_*ung 7 scala

Fantom支持可证明不可变的类.知道一个类是不可变的编译器的优点必须是众多的,其中最重要的是保证在actor之间传递不可变的消息.Fantom的方法似乎很简单 - 它对Scala有什么困难?

Dan*_*ral 12

Scala方面对跟踪副作用更感兴趣,这比简单的不变性要困难得多.

不可变性本身并不像引用透明度那样重要,事实上,Scala的一些不可变集合不会通过"经过验证的不可变"测试,因为实际上它们不是.就任何人都可以从外部观察而言,它们是不可变的,但是它们具有用于各种目的的可变字段.

一个这样的例子是List's的子类::(构成列表中所有内容的类,但是空列表),其中for head和的字段tail实际上是可变的.这样做是为了使a List能够以FIFO顺序有效地组合 - 参见ListBuffer及其toList方法.

无论如何,虽然保证不变性会很有趣,但这些事情实际上更像是一种语言的工件,其中可变性是默认的.根据我的经验,在Scala编程时,它并没有成为一个实际问题.