February 17, 2012

Alıntı (Ali Çehreli):

>

false/true gibi parametrelerden kaçınmak gerekir çünkü işlevin çağrıldığı noktadaki 'true' gibi değerin ne anlama geldiği bilinemez. Onun yerine şöyle enum'lar kullanmak çok daha yararlıdır:

>     enum Eylem { çıkart, ekle };
> ```

Şimdi enumerate (<http://ddili.org/ders/d/enum.html>) dersinizi okudum da çok güzelmiş. Bugüne kadar satranç yazılımı dışında hiç ihtiyaç duymadım. Onda da taşların isimleri ile kodlarda boğulmamak için zorunda kalmıştım. Yoksa başkası için değil yazan için bile saç yolduracak kadar karmaşık olabiliyor...:)

Az öncede üzerinde çalıştığım kodda şu şekilde denedim:

enum Doğru_mu { evet = true, hayır = false }


Ancak işlev içinde doğru aktarma yaptığım halde, sorgu içinde 'bool' yerini tutmadı. Sanırım küçük bir mantık hatası yapıyorum.

Sevgiler, saygılar...

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

enum'ların temel türlerine otomatik olarak dönüşmeleri C ve C++'ta sorun doğurmuştur. D bu konuda daha titizdir. Eğer true otomatik olarak Doğru_mu.evet'e dönüşseydi bazen biz istemeden göz yumuluyor olabilirdi.

Şu derleniyor:

enum Doğru_mu { evet = true, hayır = false }

void foo(Doğru_mu doğruluk)
{
   if (doğruluk) {
   }
}

void main()
{
   foo(Doğru_mu.evet);
}

Ali

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