(ghetto, kusura bakma başka konulara kayıyoruz. :) Umarım en azından kulak dolgunluğu olur. Çünkü örneğin 'değer türü' ve 'referans türü' ayrımı D'de önemli.)
Can, evet, şu çöküyor:
string gez;
din.readf(&gez);
çünkü string değiştirilemez. (Boş olarak oluşturulmuş bir string'in hemen hemen hiç kullanımı olmadığını da anlıyoruz.)
Bir işlevin dönüş değeri olsa, gez'i ilklemek daha kullanışlı olabilir:
import std.stdio;
import std.cstream;
string yanıtAl(string soru)
{
write(soru);
char[] yanıt;
din.readf(&yanıt);
return yanıt.idup;
}
void main()
{
string gez = yanıtAl("Gezelim mi?");
if (gez == "evet")
{
writeln("Gir koluma");
}
}
İşlevin sonundaki .idup gerekli tabii: değişebilenden değişemeyene dönüştürüyor.
İşin ilginci, şimdi o işlevi kullanarak boş bir string'i de değiştirebiliriz:
string boş;
boş = yanıtAl("hello");
Yani şimdi ikinci satırda readf değil, başka bir string ile atama yaptığımız için bu çalışıyor. Çünkü string bir 'referans türü' olduğu için, atama işlemi başka bir dizgiyi göstermesini sağlıyor ve o çökmeden çalışıyor.
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]