我需要幫助,讓我的頭腦圍繞當前的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