Quand une data est marquée immutable, elle ne pourra jamais changer, elle sera de même valeur durant toute l’exécution du programme, comme dans un langage fonctionnel.
Au niveau de la concurrence de D2, immutable permet d'être thread-safe.
Donc vu que le compilo sait que la data est immutable, il peut optimiser en fonction.
Tandis que const donne juste la garantie qu'une référence vers la data marquée const ne changera pas celle ci(la référence), par contre une autre référence vers le même objet est en droit de le modifier.(alors qu'avec immutable non)
En gros immutable est à utiliser quand la data doit rester la même du début à la fin de l'éxécution et const est plus pour garantir que la data ne sera pas modifier avec l'identificateur marqué const.(en paramètre d'une fonction par ex.)
voidmain(){int[]a=[1,2,3];immutable(int)[]b=a;//Error: cannot implicitly convert expression (a) of type int[] to immutable(int)[]b[0]=0;// ne compilera oh grand Dieu jamais}
[^] # Re: Le langage D est-il choisi lorsqu'on ne sait pas avec quoi coder ?
Posté par Eyyub . En réponse à la dépêche Le langage D. Évalué à 4.
Quand une data est marquée
immutable, elle ne pourra jamais changer, elle sera de même valeur durant toute l’exécution du programme, comme dans un langage fonctionnel.Au niveau de la concurrence de D2,
immutablepermet d'être thread-safe.Donc vu que le compilo sait que la data est
immutable, il peut optimiser en fonction.Tandis que
constdonne juste la garantie qu'une référence vers la data marquéeconstne changera pas celle ci(la référence), par contre une autre référence vers le même objet est en droit de le modifier.(alors qu'avecimmutablenon)En gros
immutableest à utiliser quand la data doit rester la même du début à la fin de l'éxécution etconstest plus pour garantir que la data ne sera pas modifier avec l'identificateur marquéconst.(en paramètre d'une fonction par ex.)Ceci t'expliquera mieux que moi ;)