No. Quello che hai è const
e immutable
, e sono transitiva (in realtà non avrebbe funzionato se non erano). Puoi fare
const(int)[] a = [0];
a[0] = 1; // ERROR.
a = []; // OK;
Ma non quello che stai cercando.
Il compilatore può fornire migliori garanzie quando const
e immutable
sono transitivi. Inoltre, immutable
non è di alcuna utilità per il threading (uno dei motivi principali per esistere) a meno che non sia transitivo e poiché tutto ciò che è immutable
deve essere in grado di essere const
, const
deve essere anche transitivo. Quindi, per necessità, non possono essere utilizzati per la semplice protezione contro la riassegnazione variabile. E non ci sono altri costrutti nella lingua per farlo.
fonte
2012-02-16 18:27:31