C'è qualche differenza in una struttura dati persistente e immutabile? Wikipedia si riferisce alla struttura dei dati immutabili quando si parla di persistenza, ma ho la sensazione che potrebbe esserci una sottile differenza tra i due.struttura dati persistente vs immutable
risposta
Immutabilità è una tecnica di implementazione. Tra le altre cose, fornisce la persistenza , che è un'interfaccia. L'API di persistenza è qualcosa di simile:
version update(operation o, version v)
esegue un'operazioneo
sulla versionev
, restituendo una nuova versione. Se la struttura dati è immutabile, la nuova versione è una nuova struttura (che può condividere parti immutabili della vecchia struttura). Se la struttura dei dati non è immutabile, la versione restituita potrebbe essere solo un numero di versione. La versionev
rimane una versione valida e non dovrebbe essere modificata in alcun modoobserve
a causa di questo aggiornamento: l'aggiornamento è visibile solo nella versione restituita, non inv
.data observe(query q, version v)
osserva una struttura dati alla versionev
senza cambiarlo o creare una nuova versione.
Per ulteriori informazioni su queste differenze, vedi:
Sì, c'è una differenza. Una struttura di dati immutabile non può essere modificata in alcun modo dopo la sua creazione. L'unico modo per modificarlo efficace sarebbe quello di creare una copia mutevole o qualcosa di simile (ad esempio modificando leggermente i parametri che si passano al costruttore di quello nuovo). Una struttura dati persistente, d'altra parte, è mutabile nel senso che l'API esposta sembra consentire modifiche alla struttura dei dati. In verità, tuttavia, qualsiasi modifica manterrà un puntatore alla struttura dati esistente (e quindi a ogni struttura precedente); sembrano solo mutare la struttura dei dati perché l'API esposta restituisce un nuovo puntatore che può includere puntatori a un sottoinsieme della struttura dei dati precedente (negli alberi, ad esempio, punteremo al nodo il cui sottoalbero non è cambiato come risultato di l'operazione).
- 1. Immutable vs Mutable C#
- 2. Java: grande struttura hash persistente?
- 3. Persistente vs non persistente - Quale dovrei usare?
- 4. mutable vs. immutable nelle collezioni Scala
- 5. Struttura dati grafici: DFS vs BFS?
- 6. Immutable @ConfigurationProperties
- 7. HTTP connessione persistente vs connessione socket TCP
- 8. migliore struttura dati per dati multidimensionali?
- 9. React, Redux e Immutable
- 10. C# immutable int
- 11. Connessione di pool vs connessione persistente mysqli
- 12. Configurazione struttura vs setter
- 13. Classe immutabile vs Struttura immutabile
- 14. Struttura database per struttura dati ad albero
- 15. Groovy classi @Immutable in Java
- 16. java.util.Stack struttura dati appropriata?
- 17. Struttura dati ricerca IPv6
- 18. Quale struttura dati usare?
- 19. Struttura dati Postgresql
- 20. URL Struttura: Minuscolo VS Maiuscolo
- 21. Architecture (struttura) -oriented vs. struttura del progetto caratteristica orientata
- 22. Serializzazione della struttura dati Clojure
- 23. Spiegazione struttura dati in corda?
- 24. Struttura dati dell'albero di espressione
- 25. Modello backbone: struttura dati nidificata
- 26. Struttura dati più appropriata (Python)
- 27. Struttura dati efficiente per classifica
- 28. La struttura dati della corda
- 29. Elenco Javascript come struttura dati?
- 30. Dizionario struttura dati in R
Se si dispone di una mappa della struttura di dati completamente persistente, ed è già stata impostata (1, 1), se si imposta nuovamente (1, 1), si considera una mutazione e si dovrebbe restituire una nuova versione della struttura dati, ev it se nulla è davvero cambiato? – CMCDragonkai
@CMCDragonkai, non penso che ci sia una sola risposta "giusta" a questa domanda. – jbapple