Hokusss, pokus!
Evet, şimdi denediğim şey bana sihir gibi geliyor ki sanırım amatör bir programcı olduğumdandır. Birazdan birlikte demetler (Tuples, Ali hocanın kitabında Çokuzlular) gibi bir şey deneyeceğiz. Zaten Ali hoca da demiş:
"O çokuzlu türünün aşağıdaki sözde yapının eşdeğeri olduğunu ve perde arkasında da öyle gerçekleştirildiğini düşünebilirsiniz:"
http://www.ddili.org/ders/d/cokuzlular.html
İşlevleriniz içinde tek kullanımlık ve sadece dönüş değerlerini taşımak için bulundurduğunuz bir yapı düşünün, nasıl yani! Bu konu şurada işlenmiş:
https://dlang.org/spec/struct.html#nested
Ancak konuyu with() kolaylığı ile birlikte geliştirirsek; bu yapı (struct), adeta Tuple ile yarışırcasına D programlama dilinde şu şekilde kodlanabilir:
auto getPoint()
{
uint i = 7;
struct Px
{
uint x, y;
string d = "Koordinatlar: ";
uint sum() { return x + i + 1; }
auto get() { return this; }
}
with(Px()) { x = 3; y = sum; return get; }/*
Px p;
p.x = 3;
p.y = p.sum();
return p;//*Yukarda tek satırda bunlar var!*/
}
import std.stdio;
void main()
{
with(getPoint) writefln!"%s %d, %d"
(d, x, y);
getPoint.x.writeln(": X");
getPoint.y.writeln(": Y");
}
Nasıldı? Hoş değil mi!
Sizce de elimizin altında olan basit ama şaşırtıcı bir uygulama değil mi? Hatta gerektiğinde alışkanlık veya geleneksel manada standart tarzımız haline gelse nasıl olurdu? Peki bu geri döndürdüğümüz veri POD mudur? Eğer öyleyse fazla sistem kaynağı harcamasa gerek:
https://dlang.org/spec/struct.html#POD
Teşekkürler...