我最近问了一个关于函数式编程的问题,并收到了(好!)答案,引发了更多问题(有时似乎是学习的情况)。这里有几个例子:
一个答案提到了不可变数据结构的优势:每个线程都可以拥有自己的副本。现在,对我来说,这听起来更像是一个版本控制系统(打个比方),不是锁定某人已签出的代码以使其无法被其他任何人修改,而是每个人都可以签出自己的副本。听起来不错。但是,在 VCS 中,您有“合并”更改的概念,以防两个人更改相同的内容。看起来这个问题肯定会出现在多线程场景中......那么当线程看到最新数据很重要时,如何“合并”?
这个答案谈到了在对象的循环中执行操作的情况,以及如何每次都使用新对象而不是更新旧对象。但是,假设
bankAccount
在非循环场景中更新 - 例如 GUI 银行系统。操作员单击“更改利率”按钮,该按钮会触发一个事件(例如在 C# 中)执行类似bankAccount.InterestRate = newRateFromUser
. 我觉得我在这里很密集,但希望我的例子是有道理的:必须有某种方式来更新对象,对吧?其他几件事可能取决于新数据。
无论如何,如果你能帮助我理解范式转变,我将不胜感激。我记得在简单的程序命令式编码方法的背景下学习 OOP 时,我的大脑经历了类似的“愚蠢阶段”。