我刚刚在Coursera完成了Martin Odersky的scala课程.Scala是我的第一个FP语言,我对限制可变状态的想法很兴奋.这允许更容易的并发性并且还使代码超级可维护.
在学习所有这些的同时,我意识到你可以保证对象的可变性,只要它没有可变变量并且只引用了不可变对象.所以现在我可以通过创建一个新状态而不是修改旧状态来做任何事情,尽可能使用尾递归.
大.所以我到目前为止只能做到这一点.在某些时候,我的应用程序需要能够修改一些现有的状态.我知道在这一点上放入并发控制的地方,锁定,等等等等.我仍然默认使用我一直使用的标准多线程并发控制.
哦斯卡拉社区,还有更好的方法吗?莫纳德也许?
编辑:这个问题有点笼统,所以我想给出一个用例:我有一个机器学习算法,可以存储几个数据集合.它们具有返回数据(训练等)的更新表示的函数,所有函数都是不可变的.最终,我可以将这个返回更新状态模式保持在运行模拟的实际对象上.它具有可变的状态并保存对集合的引用.我可能想分发到多核或多系统.