immutability

    1熱度

    1回答

    我做了一個自定義類,它涉及大量的數字和字符串計算。我通過只提供訪問器而不使用增變器來使我的類不可變。一旦對象被構建,就不會改變它的一個屬性。 我從這裏的問題是,目前我的功能所有是通過價值。如果你有一個不可變的對象,那麼即使需要引用也是通過引用的?由於副本需要不斷創建,因此在內存方面浪費了價值? 例如: class MyInteger { private: const int

    0熱度

    2回答

    我試圖定義「不可變的setter特徵」,以及這些特性的泛型函數。 我有一個工作實現,但我對模式匹配的「未檢查」警告有點不安。我不確定我能做些什麼。 type Point = (Double, Double) trait Sizable[A] { this: A => def size: Point /* immutable object value setter

    0熱度

    3回答

    考慮以下幾點: array1 = [1, 2, 3, 4] array2 = array1 # => [1, 2, 3, 4] array2.pop array2 # => [1, 2, 3] array1 # => [1, 2, 3] 爲什麼array1毀壞了,當我只呼籲array2pop?有沒有辦法pop最後一個值從array2和離開array1完好無損,所以我得到array1 #

    1熱度

    1回答

    dontMutateMeArray=[1,2,3,3,3,4,5]; toBeRemoved=3; newArray=dontMutateMeArray.something(toBeRemoved); // [1,2,3,3,4,5] iDontWantArray=dontMutateMeArray.filter(value=>value===toBeRemoved); // [1,2

    1熱度

    2回答

    我聽說使用不可變數據類型可以使併發編程更安全。 (例如,請參閱this question。)我使用C++進行編碼並試圖獲得這些好處。但我正在努力理解這個概念。 如果我創建像一個不可變的數據類型,以便: struct Immutable { public: const int x; Immutable(const int x) : x(x) {} }

    -2熱度

    1回答

    重複編輯:還有另外一個question被標記爲相似,但它不同,因爲它只涉及.append和完整列表實例。我的問題是關於偏移分配(data [j])和迭代器(在第一個函數中使用)。 我很困惑與Python的對象信息傳遞。從我的教科書中,當函數收到它的參數時,它會爲初始對象創建一個別名。此外,關於可變參數:「我們注意到,通過設置list = []將新值重新分配給形式參數不會改變實際參數;這樣的重新分配

    1熱度

    2回答

    根據我已閱讀的有關多線程的內容,如果您想創建一個由可變線程不安全類組成的不可變線程安全類,則需要將傳遞給構造函數的可變對象的防禦副本進行更改,以便在其中一些變化之後,您仍將原始版本保留在創建的對象中。例如: import java.util.Date; public class Person { private final String name; private fina

    -1熱度

    1回答

    我正在製作一個框架,它將讀取Tiled的XML文件,並且生成的對象(tpp :: File)將是純不可變的(不包含setters或複製構造函數/賦值運算符)。基本上,它使用builder pattern的想法,但不是有2個具有相同屬性的對象,而是用主屬性和另一個用來「包裝」它的屬性。 // Represents a Tiled's TMX file. This object is immutabl

    2熱度

    1回答

    我認爲這個問題與R中Mutable Vs不可變對象的概念有關,它可能是一個「開始問題」。我遇到了這個問題,其中函數names()和setnames()功能包data.table。我相信這是預期的行爲,但對我來說這是相當令人驚訝的,我相信這不僅與names()有關。 想象我有一個兩列A和B稱爲dt data.table: dt <- data.table(a = 1:5, b= 1:5) oldN

    2熱度

    1回答

    我是F#的新手,並試圖設計一些類型,我注意到有多少OOP影響了我的設計決策。我很難搜索這個特定的問題,並且空手而歸。 我將描述我在C#中試圖做的事情,因爲我更熟悉術語。讓我們說,我有一個接口,指定容器類的一些最小必需方法。我們稱之爲​​。然後我有兩個類實現這個接口,ContainerA和ContainerB帶有不同的底層實現,這些實現對用戶是隱藏的。這是一個非常常見的OOP模式。 我想在F#中實現