我一直在研究并发性,并且由于不可变的变量/状态(以及其他原因),似乎函数式语言是并发的首选,并且在并发访问它们时实际上不需要锁定这些变量和状态。但是,我有一个问题,因为像java这样的语言允许你创建不可变变量,这与函数式语言中变量的不变性有什么不同?
答案 0 :(得分:1)
唯一真正的区别在于,你不必通过箍来使函数语言不可变;它是自动的。使用java,您需要强制类是不可扩展的(通过使类最终或其所有构造函数都是私有的)并确保您的所有字段都不能更改(通过仅使用字段的原始和不可变对象或进行复制他们在进出的路上。)
但不变性是不变的,无论你使用什么类型的语言。