Bu farkı ilk önce örnek vererek anlatacağım:
import std.stdio;
void main(){
immutable char[] str = "Bir";
str[0] = 'X' ; //Derleyici hata verir.
str= "İki"; //Derleyici hata verir.
}
Bu örnekteki immutable bir tür niteleyicisi. Ve burada immutable char[] türünü niteliyor. Ve bu char[] türündeki değişenin değişmeyeceğini char[] yerine kullanılamayacağını belirtiyor. Ancak biz bunu şu şekilde tanımlar isek:
import std.stdio;
void main(){
str[0] = 'X' ; //Derleyici hata verir.
immutable (char)[] str = "Bir";
str= "İki"; //Derleyici hata vermez. Çünkü str değişkeni yeniden inşa edildi.
}
Hata vermeden çalışacaktır. Çünkü burada immutable char[] türünü nitelemiyor. sadece char türünü niteliyor. Ve bu nitelenen türden yeni bir dizi yapıyor. Bu dizinin her bir elemanı immutable özelliğine sahip. Yani elemanlarını değiştirmeye çalışırsanız iki örnektede hata verecektir. Ancak İkinci örnekte str değişkenini elemanını değilde tamamını değiştirirseniz hata vermez.
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]