4

Ich habe eine Klasse, die im Wesentlichen veränderbar ist, aber einige "persistent-like" Operationen erlaubt. Zum Beispiel kann ich das Objekt wie folgt aus (in Python) mutieren:Was würden Sie eine nicht persistente Datenstruktur nennen, die persistente Operationen erlaubt?

# create an object with y equal to 3 and z equal to "foobar" 
x = MyDataStructure(y = 3, z = "foobar") 
x.y = 4 

jedoch statt der Dinge auf diese Weise zu tun, es gibt ein paar Methoden, die stattdessen eine Kopie erstellen und es dann mutieren:

x = MyDataStructure(y=3, z="foobar") 
# a is just like x, but with y equal to 4. 
a = x.using(y = 4) 

Dies ist ein Duplikat von x mit verschiedenen Werten. Offensichtlich entspricht dies nicht der Definition von teilweise persistent, gegeben durch wikipedia.

Also was würdest du eine Klasse wie diese nennen? QuasiPersistentObject? PersistableObjekt? SortOfPersistentObject? Besser noch, gibt es dafür technische Namen?

+0

Mischen Sie die Begriffe persistent (überlebt einen Neustart) und muteable (darf Werte geändert haben)? Diese sind sehr unterschiedlich und scheinen in der Frage austauschbar zu sein. – TheJacobTaylor

+0

Ja, es scheint, dass das, was Sie persistent nennen, eigentlich unveränderlich sein soll. http://en.wikipedia.org/wiki/Immutable_object – haffax

+1

@haffax: Persistente Datenstrukturen sind von Natur aus unveränderlich, aber unveränderliche Datenstrukturen und persistente Datenstrukturen sind nicht ganz dasselbe. Siehe den Wikipedia-Link in meiner Frage. –

Antwort

2

Ich nenne diese Art von Daten Persistable aber nicht sicher, ob es ein Wort ist.

+0

Das ist das erste Wort, das mir in den Sinn kam, aber es schien mir auch ein wenig zuwider zu sein. :-) –

+0

Persistable ist ein total komisches Wort, egal was mir das Wörterbuch meines Browsers sagt. Es ist nicht nur bunt, sondern auch ziemlich performant. Mein Wörterbuch muss nur verpfändet werden ... – ifatree

2

Es ist nur eine optimierte Kopie, ich würde die Operation lieber umbenennen.

+1

Ich mag die Art und Weise, in der Typen in der Datetime-Standard-Bibliothek dieses Konzept ausdrücken - sie nennen die Methode 'ersetzen' (natürlich sind sie unveränderliche Typen, so sollte es klar sein Sie geben eine angepasste Kopie zurück, anstatt das Original zu mutieren ;-). –

+0

Das ist ein anderer Weg, es zu tun. Ich hatte irgendwie beabsichtigt, eine fließende Oberfläche zu haben. Es liest sich wie Englisch: "x mit y gleich 4". –