Merhaba,
Tek amacım karşılaştığım örnekleri bu başlıkta toplamak. Gerçi Ali hocam, 'with()' deyimine karışık duygular beslediğini ifade etmişti. Belki bu duygularını, bu vesileyle pozitife çevirebiliriz niyetindeyim. Hem D dilinin bu olanağını daha çok dillendirmiş ve haberdar olan sayısını arttırmış olacağız.
Aslında farkında olmadan ilk örneği keşfetmiş ve nakletmişim: İç içe with() deyimi... (http://ddili.org/forum/thread/839)
Peki ya buna ne demeli: İsimsiz Sınıf !!!
class S {
int a;
this() {
a = 1;
}
}
Yukarıdaki gibi basit bir sınıfımız olduğunu varsayalım. Hem geliştirme aşamasında hem de kullanım sırasında sık sık ismini yazmak yerine (çünkü bunun ismi tek haflik olmayabilirdi!) 'with()' deyimi ile isimsiz kullanabilir. Ama önce alıştığımız halini görelim:
void main() {
auto i = new S();
i.a.writeln;
i.a = 10;
i.a.writeln;
}
Gördüğünüz gibi satır sayısında bir değişiklik yok. Hatta güzel parantez ile arttığını da düşünebiliriz. Tek esprisi 'new' ile hafızada yeni yer açılan (kopyası mı Ali hocam?) sınıfı 'with()' ile kapsamamız ve bunu kümeleştirerek istediğimiz yere kadar uzatabilmemiz.
void main() {
with(new S) {
a.writeln;
a = 10;
a.writeln;
}
}
Bu deyimi aşağıdaki gibi tek satır da kullanabiliyoruz ama sanki o zaman tüm esprisi gidiyor gibi, ne dersiniz? Gerçi biraz düşünürsek tek satırda (noktalı virgülü saymazsak) hiç bir zaman yapamayacağımız bir şey yapıyoruz...:)
with(new S) a.writeln;
Bakın bu son söylediğimi ben de yeni farkettim! Aslında isteseydik 'this()' içinde benzer bir şey yapılabilirdi, bilemiyorum. Ne olursa olsun bu 'with()' deyimi gerçekten çok faydalı. Acaba başka dillerde bu olanka var mıydı?
Sevgiler, saygılar...
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]