February 16, 2013

Gözüme çarpan: Eşleme tablosunun .keys'i üzerinde ilerliyorsun ve sonra karşılık geldiği elemanı 'dizi[key]' diye buluyorsun. Onun yerine anahtarı ve elemanı doğrudan foreach'ten edinebilirsin:

   foreach (anahtar, eleman; tablo)

Hem daha hızlı olacaktır çünkü elemanı hiç aramadan ve bakmakta olduğu yerdeki bir göstergeden erişerek veriyordur.

Ali

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

February 20, 2013

Çağrışımsal diziler ile birlikte foreach() kullanımının bu şekilde davrandığını bilmiyordum! Derslerde yazmış olsa da benim dikkatsizliğimden gözümden kaçmış. Zannediyordum ki anahtar, 0'dan başlar ve eleman adetince artar. Meğer öyle değilmiş:

  auto notlar = [ 11: "Ali", 22: "Salih", 33: "Talha" ];
  foreach (anahtar, eleman; notlar) {
    eleman.writeln(": ", anahtar);
  }

Alıntı (Çıktısı):

>

Talha: 33
Ali: 11
Salih: 22

Alıntı (acehreli:1360909955):

>

Konum belirteçleri de kullanılabiliyormuş:

> import std.stdio;
>
> void main()
> {
>     auto data = [ 1: "bir", 2: "iki", 3: "üç" ];
>     writefln("%-('%2$s' değerini elde etmek için '%1$s' kullanınız%|\n%)",
>              data);
> }
> ```

> Son eleman için de "kullanınız" yazdırılsın diye "%|" kullandım. Çıktısı:
> ''1' değerini elde etmek için 'bir' kullanınız
> '2' değerini elde etmek için 'iki' kullanınız
> '3' değerini elde etmek için 'üç' kullanınız
> '
>
Hocamın cevabının bu 2. bölümüne dikkat etmemişim. Şimdi tekrar baktım da çok güzel iki özellikten bahsetmiş. Bunlar altın değerinde o yüzden öne çıkarmak istedim.

Tekrar teşekkürler...

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

İyi ki hatırlatmışsın. 1$ ve 2$ gibi konum belirteçlerinin etkisiz olduklarını farkettim. Gösterdiğim çıktı istediğimin tam tersiymiş.

Ali

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

August 16, 2013

Parametreler derleme zamanında bilindiğinde bunun başka bir yolu TypeTuple:

import std.typetuple;

void main()
{
   string str = "Adım: %s\nSoyadım: %s";

   auto ad = "Zekeriya";
   auto soyad = "Durmuş";

   alias parametreler = TypeTuple!(ad, soyad);

   string val = std.string.format(str, parametreler);
}

Ali

Not: TypeTuple'u şurada da konuştuk:

http://ddili.org/forum/thread/1227

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

1 2 3
Next ›   Last »