Dizilerle ilgili dersi yazarken şuna takıldım:
import std.stdio;
void main()
{
// Ancak başına 'static' yazınca derleniyor
int[200] seyrek_dizi = [ 50:111, 100:111 ];
int indeks;
while (indeks < seyrek_dizi.length) {
write(seyrek_dizi[indeks], " ");
++indeks;
}
writeln();
}
Orada dizi tanımını 'static' veya 'const' yapmak gerekiyormuş. Koymayınca ilgisiz bir mesaj veriyor. (?) Daha anlamadım... :( Anlayan varsa anlatsın... :)
Ayrıca 'slice''ların yazımı da çok karışık. (Bu derste anlatmayacağım; sonraya bırakıyorum.) Dinamik diziye çok benziyor:
import std.stdio;
void main()
{
int[10] statik_dizi;
// statik_dizi.length = 7; // HATA: uzunluğu değişmez
int[] dinamik_dizi;
dinamik_dizi.length = 10; // uzunluğu değişir
// dilim, statik_dizi'nin elemanlarına bir referans
// oluyor.
int[] dilim = statik_dizi[5..8];
dilim[0] = 1; // statik_dizi[5]'e karşılık geliyor
writeln("dilim, statiği değiştirdi : ", statik_dizi[5]);
// Sonundaki dup'a dikkat:
int[] kopya = statik_dizi[5..8].dup;
kopya[1] = 2; // statik_dizi[6]'nın kopyası
writeln("kopya, statiği değiştirmedi: ", statik_dizi[6]);
}
Yani 'dilim''i değiştirince asıl dizi değişiyor, ama tabii 'kopya''yı değiştirince değişmiyor. Ama yazımlarındaki fark, o sondaki '.dup'. Bence farkını daha belirgin yapmalıymışlar. (Bir önerim yok ama. :D )
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]