Ich glaube, ich war in der Lage, dies in einer früheren Version der Sprache zu tun, und in der Tat, Code, den ich vor einigen Monaten geschrieben, die kompiliert dann gut, kompiliert jetzt nicht. Beispiel:Wie kann ich in D einen Hash von unveränderlichen Typen deklarieren, der selbst veränderbar ist?
immutable(X)[int] myhash;
myhash[5] = some_immutable_X; //previously fine.
myhash[5] = some_other_immutable_X; //previously fine also.
Jetzt aber DMD klagt mit
Error: cannot modify immutable expression myhash[5]
Ich habe mit einigen anderen möglichen Syntax ohne Erfolg experimentiert (z (unveränderlich X) [int]). Es scheint, dass es keinen Weg mehr gibt zu erklären, dass der Hash selbst veränderbar ist, aber der Inhalt nicht? Dies scheint ein ziemlich verbreiteter Anwendungsfall zu sein: eine Datenstruktur zum Speichern von Verweisen auf Dinge, die nicht verändert werden sollten. Hat jemand einen Einblick in das?
Ist X-Wert oder ein Referenztyp (dh Klasse)? –
Funktioniert nicht mit keiner, aber funktioniert gut mit 2.066.1 und vor – Kozzi11
X ist eine Klasse (d. H. Eine Referenz). –