Credo di essere stato in grado di farlo in una versione precedente del linguaggio, e infatti, il codice che ho scritto diversi mesi fa, che compilato bene allora, non viene compilato ora. Esempio:In D, come posso dichiarare un hash di tipi immutabili che è esso stesso mutabile?
immutable(X)[int] myhash;
myhash[5] = some_immutable_X; //previously fine.
myhash[5] = some_other_immutable_X; //previously fine also.
Ora però, DMD lamenta con
Error: cannot modify immutable expression myhash[5]
Ho sperimentato con qualche altra possibile sintassi senza successo (per esempio (immutabile X) [int]). Sembra che non ci sia più un modo per dichiarare che l'hash stesso è mutevole, ma i contenuti non lo sono? Questo sembra un caso d'uso abbastanza comune: una struttura dati per memorizzare riferimenti a cose che non dovrebbero essere alterate. Qualcuno ha qualche idea in questo?
È il valore X o un tipo di riferimento (cioè classe)? –
Non funziona con nessuno dei due, ma funziona bene con 2.066.1 e prima di – Kozzi11
X è una classe (cioè un riferimento). –