• [^] # Re: Le langage D est-il choisi lorsqu'on ne sait pas avec quoi coder ?

    Posté par . 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, 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.)

    void main()
    {
     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
    }
    
    
    void main()
    {
     int[] a = [1, 2, 3];
     const(int)[] b = a; // compile
     a[0] = 0;//compile
     b[0] = 0;//compile pas
    }
    
    

    Ceci t'expliquera mieux que moi ;)