Pytania otagowane jako immutability

Niezmienność to brak możliwości modyfikowania danych po ich utworzeniu. Zamiast tego zmiany są dokonywane poprzez kopiowanie danych. Właściwością niezmiennych danych jest to, że są one * referencyjnie przezroczyste *.

7
Kolekcja niezmienna vs niezmodyfikowalna
Z przeglądu struktury kolekcji : Kolekcje, które nie obsługują operacji modyfikacji (takich jak add, removei clear) są nazywane niemodyfikowalnymi . Kolekcje, których nie można modyfikować, można modyfikować . Kolekcje, które dodatkowo gwarantują, że żadna zmiana w Collectionobiekcie nie będzie widoczna, nazywane są niezmiennymi . Kolekcje, które nie są niezmienne, są …


14
Niezmienna tablica w Javie
Czy istnieje niezmienna alternatywa dla pierwotnych tablic w Javie? Tworzenie prymitywnej tablicy w finalrzeczywistości nie uniemożliwia zrobienia czegoś takiego final int[] array = new int[] {0, 1, 2, 3}; array[0] = 42; Chcę, aby elementy tablicy były niezmienne.

14
Czym byłby „zamrożony dyktat”?
Zamrożony zestaw to zamrożony zestaw. Zamrożona lista może być krotką. Czym byłby zamrożony dyktando? Niezmienny, haszowalny dykt. Myślę, że może to być coś podobnego collections.namedtuple, ale to bardziej przypomina dyktowanie zamrożonych kluczy (półzamrożone dyktowanie). Prawda? A „frozendict” powinny być zamrożone słownik, powinien on mieć keys, values, get, itd., A także …

8
Błąd: „Nie można zmodyfikować wartości zwracanej” C #
Używam właściwości zaimplementowanych automatycznie. Wydaje mi się, że najszybszym sposobem rozwiązania tego problemu jest zadeklarowanie własnej zmiennej bazowej? public Point Origin { get; set; } Origin.X = 10; // fails with CS1612 Komunikat o błędzie: Nie można zmodyfikować wartości zwracanej „wyrażenie”, ponieważ nie jest to zmienna Podjęto próbę zmodyfikowania typu …

15
Niezmiennie usuwa właściwość z obiektu
Używam Redux. W moim reduktorze próbuję usunąć właściwość z obiektu takiego: const state = { a: '1', b: '2', c: { x: '42', y: '43' }, } I chcę mieć coś takiego bez konieczności modyfikowania pierwotnego stanu: const newState = { a: '1', b: '2', c: { x: '42', }, …

13
Wyliczenia w Javascript z ES6
Odbudowuję stary projekt Java w Javascript i zdałem sobie sprawę, że nie ma dobrego sposobu na wykonanie wyliczeń w JS. Najlepsze, co mogę wymyślić, to: const Colors = { RED: Symbol("red"), BLUE: Symbol("blue"), GREEN: Symbol("green") }; Object.freeze(Colors); constUtrzymuje Colorsprzed przeniesiony i zamrażania zapobiega mutacji klucze i wartości. Używam symboli, więc …

8
Zalety programowania bezstanowego?
Niedawno uczyłem się programowania funkcjonalnego (szczególnie Haskell, ale przeszedłem też przez samouczki na temat Lisp i Erlang). Chociaż uważam te koncepcje za bardzo pouczające, nadal nie widzę praktycznej strony koncepcji „bez skutków ubocznych”. Jakie są praktyczne zalety tego rozwiązania? Próbuję myśleć funkcjonalnie, ale są sytuacje, które wydają się zbyt skomplikowane …

7
Szybka zmiana parametru metody?
Jak mogę sobie poradzić z tym błędem bez tworzenia dodatkowej zmiennej? func reduceToZero(x:Int) -> Int { while (x != 0) { x = x-1 // ERROR: cannot assign to 'let' value 'x' } return x } Nie chcę tworzyć dodatkowej zmiennej tylko po to, aby przechowywać wartość x. Czy w …



6
Niezmienne kolekcje Java
Z dokumentacji Java 1.6 Collection Framework : Kolekcje, które nie obsługują żadnych operacji modyfikacji (takich jak add, removei clear) są określane jako niemodyfikowalne . […] Kolekcje, które dodatkowo gwarantują, że żadna zmiana w obiekcie Collection nigdy nie będzie widoczna, nazywane są niezmiennymi . Drugie kryterium trochę mnie dezorientuje. Biorąc pod …

6
Jak utworzyć niezmienną klasę?
Pracuję nad stworzeniem niezmiennej klasy. Oznaczyłem wszystkie właściwości jako tylko do odczytu. Mam listę przedmiotów w klasie. Chociaż jeśli właściwość jest tylko do odczytu, lista może być modyfikowana. Ujawnienie IEnumerable listy sprawia, że ​​jest ona niezmienna. Chciałem wiedzieć, jakie są podstawowe zasady, których należy przestrzegać, aby klasa była niezmienna?
113 c#  .net  immutability 



Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.