std.conv.to dizgiden bool'a dönüştürebiliyor. Mantıksal ifadeler bölümünün 4 numaralı probleminde girişten_bool_oku() diye bir işlev var:
http://ddili.org/ders/d/mantiksal_ifadeler.html
bool girişten_bool_oku(string mesaj)
{
// Mesajı yazdır
writef(mesaj);
// Girilen kelimeyi bir dizgiye oku
char[] giriş;
readf("%s\n", &giriş);
/*
Şimdi girilen dizgi "true" ise true değerini, "false"
ise false değerini döndürmek istiyoruz. Yani burada bir
dönüşüm yapıyoruz: örneğin "true" dizgisini görünce
true değerini döndürüyoruz.
Not: "true" dizgisi ile true değerinin aynı şey
olmadıklarına dikkat edin: Birisi 't', 'r' gibi
karakterlerden oluşur, diğeri ise bir bool
değeridir.
*/
// Sonuç olarak döndüreceğimiz değişken:
bool dönüştürülen_değer;
// "false"tan false'a ve "true"dan true'ya dönüşüm
if (giriş == "false") {
dönüştürülen_değer = false;
} else if (giriş == "true") {
dönüştürülen_değer = true;
} else {
/*
Bilmediğimiz bir kelime geldi. Bu durumda ne
yapacağımız belli olmadığı için işlemden
vazgeçip hata atmaktan başka hiçbir çaremiz yok.
*/
throw new Exception(
("Bu kelimeyi anlamadım: " ~ giriş ~
". Lütfen false veya true yazın.").idup);
}
return dönüştürülen_değer;
}
Onu şöyle değiştireceğim:
bool girişten_bool_oku(string mesaj)
{
// Mesajı yazdır
writef(mesaj ~ "(false veya true) ");
// Girilen kelimeyi bir dizgiye oku
string giriş;
readf("%s\n", &giriş);
// O dizgiden bir bool değer üret
bool dönüştürülen_değer = to!bool(giriş);
// Üretilen değeri işlevi çağırana döndür
return dönüştürülen_değer;
}
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]