我需要帮助,让我的头脑围绕当前的OOP状态概念和它在Haskell或Clojure等函数式语言中的做法之间的区别。函数式编程:状态与再调用
要使用一个陈旧的例子,假设我们正在处理简化的银行帐户对象/结构体/任何。在OOP语言中,我会有一些类持有对BankAccount的引用,这些BankAccount将具有诸如利率之类的实例变量,以及像setInterestRate()这样的方法,它们会更改对象的状态并且通常不会返回任何内容。在说Clojure时,我会有一个银行帐户结构(一个荣耀的散列表),以及一些特殊函数,它们需要一个银行帐户参数和其他信息,并返回一个新的结构。因此,我不用改变原始对象的状态,而是通过所需的修改返回新的对象。
那么...我该怎么处理它呢?覆盖引用旧银行帐户的任何变量?如果是这样,这是否比改变状态的面向对象方法有优势?最后,在这两种情况下,似乎都有一个变量引用具有必要更改的对象。尽管我受到了阻碍,但对于发生的事情我只有一个模糊的概念。
我希望这是有道理的,谢谢你的帮助!
此视频是关于此主题的“必备手表”:http://www.infoq.com/presentations/Are-We-There-Yet-Rich-Hickey – mikera 2012-01-06 03:47:49