Merhaba,
Şimdi şu kısacık koda bakın, bunu Steven Schveighoffer yazmıştı ve şu şekilde kırpıp uyguladım:
struct İliştirici(T) {
T[] *arr;
void put(R)(R value) { (*arr) ~= value; }
}
auto iliştirici(T)(return ref T[] arr) {
return İliştirici!T(&arr);
}
Elbete bu konu, D'de bir diziye ~=
işleçleriyle ekleme/iliştirme/katma ile ilgili (yabancı forumda put'u diğer dillerin etkisiyle karıştırılabileceğinden bahsediyor) ve yapacağımız tek satırda bu kadar da basit bir şey. Ancak işin içine işlevler, yapılar arasında veri paylaşımı ve parametre kopyalama gibi şeyler girince veri kaynağını iyi yönetemediğinizi fark ediyorsunuz. Çoğu zaman std.array
'deki Appender'ı kullanırız. Şimdiki karşılaştırma onu geride bırakıp kendi İliştirici'mizi değerli kılıyor:
import std.stdio;
void main()
{
string[] bir = ["bir"];
bir.iliştirici.put = ["2", "3"];
bir.writefln!"%(%s\n%)";
writeln;
import std.array;
string[] iki = ["iki"];
appender(&iki).put = ["3", "4"];
iki.writefln!"%(%s\n%)";
} /* ÇIKTISI:
"bir"
"2"
"3"
"iki"
"3"
"4
*/
Düşünceleriniz neler, sizce de çok lezzetli değil mi?
Başarılar...