Mic*_*ael 6 functional-programming scala immutability data-structures
斯卡拉提供不可变的集合,如Set
,List
,Map
.我知道不变性在并发程序中具有优势.但是,常规数据处理中不变性的优势究竟是什么?
如果我枚举subsets
,permutations
并combinations
为例子吗?是否不可变的集合这里有什么优势?
确实如此.由于您在枚举上进行了枚举,因此您可能希望确定在枚举时不会无意中添加或删除元素.
不可变性在函数式编程中是一种范式.使集合不可变允许人们将它们看作原始数据类型(即修改集合或任何其他对象导致创建不同的对象,就像添加2到3不会修改3,但创建5)
扩展Matt的答案:根据我的个人经验,我可以说基于搜索树的算法实现(例如广度优先,深度优先,回溯)使用可变集合定期作为一堆热气腾腾的垃圾:你忘了复制一个集合在递归调用之前,或者如果收回集合,则无法正确收回更改.在那个领域,不可变的收藏显然是优越的.当我无法正确使用Java的集合时,我最终用Java编写了自己的不可变列表.瞧,第一个"不可变"的实施工作立即起作用.