Czy istnieje jakaś różnica w trwałej i niezmiennej strukturze danych? Wikipedia mówi o niezmiennej strukturze danych podczas omawiania wytrwałości, ale mam wrażenie, że może istnieć subtelna różnica między tymi dwoma.struktura danych trwałych a niezmiennych
Odpowiedz
Immutability to technika implementacji. Między innymi zapewnia trwałość, który jest interfejsem. Utrzymywanie API jest coś takiego:
version update(operation o, version v)
wykonuje operacjęo
wersjiv
, powracając do nowej wersji. Jeśli struktura danych jest niezmienna, nowa wersja jest nową strukturą (która może dzielić niezmienne części starej struktury). Jeśli struktura danych nie jest niezmienna, zwrócona wersja może być po prostu numerem wersji. Wersjav
pozostaje poprawną wersją i nie powinna się zmieniać w żaden sposób, aby była możliwa z powodu tej aktualizacji - aktualizacja jest widoczna tylko w zwróconej wersji, a nie wv
.data observe(query q, version v)
obserwuje strukturę danych w wersjiv
, nie zmieniając jej ani nie tworząc nowej wersji.
Więcej informacji na temat tych różnic, zobacz:
Tak, jest różnica. Niezmienna struktura danych nie może być w żaden sposób modyfikowana po jej utworzeniu. Jedynym sposobem na efektywną modyfikację byłoby utworzenie zmiennej lub czegoś podobnego (np. Nieznacznie modyfikującego parametry, które przekazujesz do konstruktora nowego). Z drugiej strony, stała struktura danych jest zmienna w tym sensie, że ujawniony interfejs API wydaje się zezwalać na zmiany w strukturze danych. W rzeczywistości jednak wszelkie zmiany zachowają wskaźnik do istniejącej struktury danych (a zatem każdej poprzedniej struktury); zdają się mutować tylko strukturę danych, ponieważ odsłonięty interfejs API zwraca nowy wskaźnik, który może zawierać wskaźniki do podzbioru poprzedniej struktury danych (w drzewach, np. wskażemy na węzeł, którego poddrzewo nie zmieniło się w wyniku operacja).
- 1. Jakiego rodzaju struktura danych jest używana dla niezmiennych map?
- 2. Jak działa współbieżność za pomocą typów i struktur danych niezmiennych/trwałych?
- 3. Postgres w trwałych danych Docker
- 4. Jak usunąć główny magazyn danych trwałych
- 5. Struktura danych drzewa PostgreSQL
- 6. Struktura danych drzewa ekspresji
- 7. Struktura danych liny
- 8. Wykonywanie trwałych i trwałych informacji przez przeglądarkę iOS 7
- 9. słownik struktura danych w R
- 10. Performatic struktura bez powielania danych
- 11. Najbardziej odpowiednia struktura danych (Python)
- 12. Struktura bazy danych dla struktury danych drzewa
- 13. Struktura bazy danych ściany Facebooka
- 14. JAVA - Najlepsza odpowiednia struktura danych
- 15. C struktura jako typ danych
- 16. Model szkieletowy: struktura danych zagnieżdżonych
- 17. Struktura danych tabeli w pamięci
- 18. Używanie podklas NSManagedObject do transportu trwałych i nietrwałych danych
- 19. Wady obiektów niezmiennych
- 20. Wywoływanie niezmiennych sparowanych obiektów
- 21. java: biblioteki dla niezmiennych struktur danych funkcjonalnych stylu
- 22. Struktura danych dla procesu decyzyjnego Markova
- 23. Struktura danych do wybierania elementów losowych?
- 24. Najlepsza struktura danych reprezentująca planszę gry
- 25. Która struktura danych byłaby najlepsza dla tego?
- 26. Struktura bazy danych dla systemu komentowania strony
- 27. Szybsza struktura danych dla wyszukiwania ciągu znaków
- 28. Tworzenie niezmiennych obiektów z javabean
- 29. Struktura danych do wyboru grup maszyn
- 30. Jedna globalna struktura danych w Vue.js
Jeśli masz w pełni trwała struktura danych mapy, a masz już ustawione (1, 1), jeśli ustawisz ponownie (1, 1), jest to uważane za mutację, i powinieneś zwrócić nową wersję struktury danych, ev pl jeśli nic tak naprawdę się nie zmieniło? – CMCDragonkai
@CMCDragonkai, nie sądzę, że istnieje jedna "właściwa" odpowiedź na to pytanie. – jbapple