Alıntı (Salih Dinçer):
> UCFS'yi deneyim dedim de bir terslik var bu işte...:)
Evet, ters olmuş; UFCS olacak. ;)
Alıntı:
> Çünkü 'opCastJSONValue(T)()' işlevinin sağından itibaren devam etmem (öyle ya, parantez içinde kalıyor) gerekirken soluna koyduğumda hata vermiyor.
Anlamadım. :( Neyi sağına ve soluna koyuyorsun? UFCS'i hatırlayalım: Eğer tek parametre alan normal bir işlev varsa o işlev sanki o parametrenin üye işleviymiş gibi çağrılabilir:
double yarısı(double i)
{
return i / 2;
}
void main()
{
auto y = 42.yarısı(); // <-- int bile nesne gibi kullanılabiliyor!
}
Alıntı:
> Sanki 'mixin()' özelliği parantez içine giriyor.
UFCS işlevleri ilgilendiren bir konu ama mixin() bir işlev değil, bir ifade. Şurada "Mixin Expressions" başlığı altında bir dil olanağı olarak geçiyor:
http://dlang.org/expression.html
(Yakın ama farklı bir kavram olarak "Template Mixins" de var: http://dlang.org/template-mixin.html)
Alıntı:
> [ Hadi benim bildiğim ters, peki 'writeln()' de mi ters?
> toJSON(&belge).writeln;
> }
> ```
O doğru işte çünkü writeln() bir işlevdir. writeln(), ilk parametresinin üye işleviymiş gibi çağrılmış.
Alıntı:
> Her zaman ki gibi @property'nin hiç bir etkisi de yok. Ne iş?
@property, opCastJSONValue(T)() işlev şablonunu parantezsiz olarak çağırabilmemizi sağlıyor. @property yapmasaydık sonuna boş olan işlev parantezlerini de eklememiz gerekirdi:
// @proprety olmasaydı opCastJSONValue!Öğrenci() diye işlev çağırma parantezleri gerekirdi:
mixin(opCastJSONValue!Öğrenci());
Bu arada opCastJSONValue kısa bir isim ama fazla genel değil mi? Sanki opCast()'in tek bir gerçeklemesi varmış gibi oluyor; sanki "bu, Öğrenci sınıfının opCast() işlevidir" gibi... Ama nasıl bir opCast() olduğunu söylemiyor. Ben o yüzden bütün üyelerini sırayla dönüştürdüğünü bildirmek için BütünÜyelerİçin_opCastJSONValue demiştim. Daha önce Standart_opCastJSONValue'yu da düşünmüştüm. Çünkü bazı üyeler geçici değerlerdir örneğin dikdörtgenin hazırda bekleyen uzunluk değeridir ve belki de dosyaya yazılması gerekmiyordur. O zaman başka opCast() kullanılabilir ve onun başka ismi olur: şakayla karışık olarak:
mixin(BazıÜyeleriEksik_opCastJSONValue!Öğrenci("gereksizÜye"));
Ali
--
[ Bu gönderi, <http://ddili.org/forum>'dan dönüştürülmüştür. ]