我需要帮助来了解我当前的 OOP 状态概念与使用 Haskell 或 Clojure 等函数式语言的方式之间的差异。
举一个陈腐的例子,假设我们正在处理简化的银行账户对象/结构/任何东西。在 OOP 语言中,我将有一些类持有对 BankAccount 的引用,该类将具有用于利率之类的实例变量,以及诸如 setInterestRate() 之类的方法,它们会更改对象的状态并且通常不返回任何内容。比如说 Clojure,我有一个银行账户结构(一个美化的哈希图),以及接受银行账户参数和其他信息并返回一个新结构的特殊函数。因此,我现在没有更改原始对象的状态,而是返回了一个带有所需修改的新对象。
那么......我该怎么办?覆盖引用旧银行帐户的任何变量?如果是这样,这是否比改变状态的 OOP 方法具有优势?最后,在这两种情况下,似乎都有一个变量引用了具有必要更改的对象。尽管我很迟钝,但我对正在发生的事情只有一个模糊的概念。
我希望这是有道理的,感谢您的帮助!