immutability

    13熱度

    4回答

    我需要幫助,讓我的頭腦圍繞當前的OOP狀態概念和它在Haskell或Clojure等函數式語言中的做法之間的區別。 要使用一個陳舊的例子,假設我們正在處理簡化的銀行帳戶對象/結構體/任何。在OOP語言中,我會有一些類持有對BankAccount的引用,這些BankAccount將具有諸如利率之類的實例變量,以及像setInterestRate()這樣的方法,它們會更改對象的狀態並且通常不會返回任何

    13熱度

    7回答

    我正在學習DDD,並且遇到了「值對象」應該是不可變的聲明。我知道這意味着對象狀態在創建後不應該改變。這對我來說是一種新的思維方式,但在許多情況下它是有意義的。 好的,所以我開始創建不可變的值對象。 我要確保他們採取了整個狀態參數構造函數, 我不加屬性setter, 並確保沒有方法允許修改內容(只返回新實例)。 但現在我想創建這個值對象,它將包含8個不同的數值。如果我創建了一個有8個數字參數的構造函

    12熱度

    9回答

    字符串不可變性是通過語句還是通過語句中的字符串工作? 例如,我知道下面的代碼會在堆上分配兩個字符串。 string s = "hello "; s += "world!"; 「hello」將留在堆上直到垃圾收集;現在引用「你好世界!」在堆上。但是,下列行在堆上分配了多少個字符串... 1或2?另外,有沒有一種工具/方法來驗證結果? string s = "goodbye " + "cruel

    2熱度

    4回答

    當我將不可變類型的對象(String,Integer,..)作爲final傳遞給一個方法時,我可以實現C++常量指針的字符。但是我怎樣才能在可變的對象中執行這樣的行爲呢? public void someMethod(someType someObject){ /* * code that modifies the someObject's state * */

    50熱度

    8回答

    恐怕這是一個非常愚蠢的問題,但我必須錯過一些東西。 爲什麼要使用String.Copy(string)? 文檔說該方法 創建具有 字符串的一個新實例相同的值指定的字符串。 由於字符串在.NET不可變的,我不知道什麼是使用這種方法的好處,因爲我認爲 string copy = String.Copy(otherString); 會 爲所有實用目的似乎產生相同結果作爲 string copy =

    15熱度

    8回答

    有沒有人知道一個庫或至少一些關於在Java中創建和使用持久化數據結構的研究?我並沒有將持久性稱爲長期存儲,而是將其作爲長期存儲(參見Wikipedia entry)。 我目前正在探索不同的方式來建模持久性結構的api。使用建設者似乎是一個有趣的解決方案: // create persistent instance Person p = Builder.create(Person.class)

    8熱度

    3回答

    我正在尋找可用於實現關係模型的持久數據結構的材料。 堅持不變數據結構的含義。 任何人都知道一些好的資源,書籍,論文等? (我已經有這本書Purely Functional Data Structures,這是什麼,我正在尋找一個很好的例子。)

    5熱度

    3回答

    我非常好奇爲java bean提供不可變性的可能性(這裏的bean指的是具有爲構造成員提供getter和setter的空構造函數的類)。很明顯,這些類不是不可變的,它們被用來從數據層傳輸值,這似乎是一個真正的問題。 這個問題的一種方法在StackOverflow中被稱爲「C#中的不可變對象模式」,其中對象一旦完全構建就被凍結。我有另一種方法,並且很想聽到人們對此的看法。 該模式涉及兩個類Immut