Fantom支持provably immutable类。编译器知道一个类是不可变的,这肯定有很多好处,其中最重要的是要保证在参与者之间传递的消息是不可变的。Fantom的方法看起来很简单--它会给Scala带来什么困难?
发布于 2013-02-14 22:59:23
Scala对跟踪副作用有更多的兴趣,这是一个更难的命题,而不是简单的不变性。
不可变性本身并不像引用透明性那样重要,事实上,Scala的一些不可变集合在“被证明是不可变的”测试中不会通过集合,因为它们实际上不是。就任何人从外部观察而言,它们都是不可变的,但它们具有用于各种目的的可变字段。
一个这样的例子是List的子类:: (这个类组成了列表中除空列表之外的所有内容),其中head和tail的字段实际上是可变的,这样就可以按照先进先出的顺序有效地组合List --参见ListBuffer及其toList方法。
无论如何,虽然保证不变性是一件很有趣的事情,但这类事情实际上更多的是可变性是缺省的语言的产物。根据我的经验,在用Scala编程时,这并不是一个实际的问题。
发布于 2013-02-14 22:59:53
虽然该方法可能很简单,
https://stackoverflow.com/questions/14877074
复制相似问题