immutability

    5熱度

    2回答

    我有一個簡單的函數Bar,它使用一組數據集中的一組值,這些值是以數據結構數組的形式傳入的。數據可以來自兩個來源:一個常量初始化的默認值數組或一個動態更新的緩存。 調用函數決定哪些數據被使用,應該傳遞給Bar。 Bar不需要編輯任何數據,實際上不應該這樣做。我應該如何聲明Bar的數據參數,以便我可以提供兩組數據? union Foo { long _long; int _int; } s

    2熱度

    2回答

    後來我將一個名爲Actor的簡單類放在一起,這是我實施Actor Model時的一個簡單類。從那以後,我用它取得了巨大的成功(減少了一些令人討厭的解決方法,因爲缺乏歧視性的聯盟類型)。我留下了一個問題,我不確定如何解決,而不會讓班級變得笨重和緩慢。 當某人定義了一條消息時,他們當然在他們的權利範圍內包含對調用者自己可以操作的對象的引用。即使知道我幾乎是唯一使用這門課程的人,這仍然困擾着我。 解決這

    1熱度

    2回答

    假設我有一些特殊的課程,WrappedDataTable,我想將每個WrappedDataTable與一個DataTable完全關聯。此外,我希望對於任何給定的DataTable,不會有超過一個WrappedDataTable。 一位同事建議我可以緩存我WrappedDataTable和使用工廠方法來訪問一個,比如這個: public static class DataTableWrapper

    12熱度

    1回答

    我有以下類: class MySet(set): def __init__(self, arg=None): if isinstance(arg, basestring): arg = arg.split() set.__init__(self, arg) 可正常工作(初始化設定以字符串的話,而不是字母)。然而,當我想要做一套一成不變的版本一樣

    31熱度

    3回答

    在Clojure中獲取簡單,高效的不可變隊列數據類型的最佳方式是什麼? 它只需要兩個操作,入隊和出隊與通常的語義。 我認爲是當然的名單和載體,但據我所知,他們的表現相對較差(即O(N)或更糟)進行修改,在年底分別開始 - 所以不理想的隊列! 理想我想和O(log n)的兩個入隊和出隊操作的適當的持久數據結構。

    12熱度

    3回答

    我注意到,而在我的追求瘦函數式編程,有情況下,當參數列表開始使用嵌套不變的數據結構時變得過大。這是因爲在更新對象狀態時,您還需要更新數據結構中的所有父節點。請注意,在這裏我將「update」表示爲「用適當的更改返回新的不可變對象」。 例如我發現自己寫(Clojure的例子)的一種功能是: (defn update-object-in-world [world country city buildi

    4熱度

    5回答

    是以下類不變: final class MyClass { private final int[] array; public MyClass(int[] array){ this.array = array; } }

    7熱度

    1回答

    我想將生成器或迭代器遞歸轉換爲列表。 我在下面寫了一段代碼,但它看起來很幼稚和醜陋,並且可能會在doctest中丟棄大小寫。 Q1。幫助我的好版本。 Q2。如何指定對象是不可變的? import itertools def isiterable(datum): return hasattr(datum, '__iter__') def issubscriptable(datum)

    14熱度

    1回答

    將collection.immutable.Set轉換爲collection.mutable.Set的最佳方法是什麼?

    1熱度

    2回答

    考慮一下: >>> foo = {} >>> foo[1] = 1.0 >>> foo[2] = foo[1] >>> foo {1: 0.0, 2: 0.0} >>> foo[1] += 1.0 {1: 1.0, 2: 0.0} 這是什麼情況。不過,我想會是最後一行寫着: {1: 1.0, 2: 1.0} 含義既指的是相同的值,即使該值的變化。我知道上面的工作方式,因爲數字在