April 29, 2011

Alıntı (acehreli):

>

Ben bir dilimin "başka dilimin erişim sağladığı elemanlara erişim sağladığını" söyleyince, bu doğal olarak yukarıdaki sayılar ve çiftler'e de uyuyor.

Kendimi yanıltmışım. O tanım aslında doğru. Bir sınıf değişkenini ilklediğimizde iki şey oluştuğunu hatırlayalım:

   Sınıf değişken = new Sınıf;

Soldaki değişken... Sağdaki ise nesne. Bence sınıf dizilerinin tanımında bir gariplik var:

   Sınıf[] dizi;

yazdığımız zaman, her ne kadar "sınıf dizisi" diyorsak da, aslında "sınıf değişkeni dizisi" demek daha doğru. Yukarıda çizdiğim şekillerde 'o' ile belirlenenler sınıf değişkeni.

Bu açıdan bakınca, yani dilimlerin elemanlarının değişken olduklarını görünce, dilimin "aynı elemana erişim sağlaması" kavramı yine de geçerli. Çünkü elemanlar değişken, nesne değil.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 29, 2011

Asıl kod şöyleydi:

   Sayı[] sayılar;
   Sayı[] çiftler;
// ...
       sayılar ~= sayı;
// ...
           çiftler ~= sayı;

Alıntı (acehreli:1277307019):

>

Alıntı (canalpay):

>

Burada çiftler sayıların dilimi.

Doğru.

Erdem'in uyarısıyla kendimi (ve Can'ı) düzeltiyorum: çiftler sayıların dilimi değil.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 29, 2011

Alıntı (erdem):

>

Alttaki kodda da benim düşündüğümün aynısı. Tek farkla ki ilk örnekte ben dilim0'ın dizi olduğunu ve sadece dilim1'in dilim olduğunu düşünüyorum.

dilim0 da dilim, çünkü dinamik dizilerle dilimler aynı şey:

   int[] dilim0 = [ 11, 12, 13 ];
   int[] dilim1 = dilim0;

O kodda üç şey var:

  • yan yana üç int
  • onlara erişim sağlayan dilim0
  • onlara erişim sağlayan dilim1

Yani dilim0 ile dilim1'in iç yapıları aynı.

(Sanıyorum sabit uzunluklu dizilerde durum farklı.)

Alıntı:

>

Ben şöyle düşünüyorum. Eğer iki tanesinin uzunluğu eşitse ve 'is' koşulunu sağlıyorsa aynı sınırlara sahip.

Zaten == işleci de o gerçekten yararlanır ve öncelikle ptr ve length'e bakar. Eğer onlar eşitse hiç eleman karşılaştırmasına geçmez.

Alıntı:

>

çöp toplayıcı çalışıp belleği geri verebilir mi gibi değişik fikirler gelmişti

Nesneye erişim mümkün olduğu sürece çöp toplayıcı belleği geri almaz.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 29, 2011

Alıntı (acehreli):

>

(Sanıyorum sabit uzunluklu dizilerde durum farklı.)

Sabit uzunluklu diziler çok daha basit. Onlar C'deki diziler gibi, yalnızca yan yana elemanlardan oluşuyorlar:

import std.stdio;

void main()
{
   int[10] dizi;

   writeln("sizeof               : ", dizi.sizeof);
   writeln("length               : ", dizi.length);
   writeln("ptr                  : ", dizi.ptr);
   writeln("dizi adresi          : ", &dizi);
   writeln("ilk elemanının adresi: ", &dizi[0]);
}

Orada yan yana 10 elemandan başka bir şey yok. dizi, hepsini birden temsil ediyor. Dizinin ve ilk elemanının aynı adrese sahip olmaları bunu gösteriyor:

'sizeof : 40
length : 10
ptr : FFD19848
dizi adresi : FFD19848
ilk elemanının adresi: FFD19848
'

length bilgisi, hiç değişemediği için türün içinde mevcut; çünkü dizinin türü int[10]...

ptr diye bir üye de yok; herhalde dizinin adresi ile aynı şey...

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

May 02, 2011

http://ddili.org/ders/d/tureme.html

Buradaki 2. çözümü gereksiz yere değiştirdim:

class Tren : DemirYoluAracı {
// ...
   this() {
       lokomotif = new Lokomotif;

       foreach (int i; 0 .. 5) {
           vagonlar.length = 5;
           vagonlar[i] = new Vagon;
       }
   }

   override string ses() {
       string lokomotifSes = lokomotif.ses() ~ ' ';
       string vagonlarSes = replicate("~[tak tuk]", vagonlar.length);
       return lokomotifSes ~ vagonlarSes;
   }
}

Böylece biraz da olsa görsel olarak arkada 5 vagon var havası oluşmuş oldu. Yakında bu trenler 'tren gelir hoşgelir♫' şarkısını da söylese şaşmamak lazım :)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

May 02, 2011

Çok harika bir örnek olmuş. İnsanın bunu oyun haline getiresi geliyor ;-)

Ayrıca Tren'in gene bir DemirYoluAracı olan vagon ve lokomotifleri içermesi dikkatimi çekmişti. Herhalde D kalıtımı bu şekilde gerçekliyor diye düşünmüştüm.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

May 02, 2011

Kendisi de DemirYoluAracı olan Tren başka DemirYoluAracı nesnelerini içerdiği için burada composite design pattern var.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

1 2 3
Next ›   Last »