2012-02-16 11 views

risposta

6

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.

Problemi correlati