Merhaba,
Bazen "demet", bazen "çok-öğeli" olarak karşılaşabileceğiniz tuple'lar birçok işinize yarayabilir. Aslında bu konu çok geniş ve kütüphanenin tüm olanakları şuradan okunabilir:
https://dlang.org/phobos/std_typecons.html#Tuple
Fakat örneklerle anlamayı kolaylaştırmak elimizde. Fıstıkçı Şahap ile başlayalım 😀
Aşağıda önce, sınıf içinde bir alias kullanarak Field Names(¹) tanımlanıyor ve tanımlanan isim alanları çerçevesinde 2 ayrı dizge işleniyor. Devamında son satırlarda Expand(²) ile bir çokuzlunun, ne kadar işleri kolaylaştırdığı görülüyor:
struct Data {
string ad, soyad;
string toString()
{
return ad ~ " " ~ soyad;
}
}
class TupleNames
{
import std.typecons;
private Data data;
alias Values = Tuple!(string, "adı",
string, "soyadı");
void setNames()
{
import std.conv, std.uni;
data.ad = data.ad.asCapitalized.to!string;
data.soyad = data.soyad.toUpper;
}
Values getNames()
{
return Values(data.ad, data.soyad);
}
}
import std.stdio;
void main()
{
Data gidenVeri, gelenVeri = { ad : "fıstıkçı",
soyad : "şahap" };
with(new TupleNames)
{
data = gelenVeri;
getNames.adı.write(" ");
getNames.soyadı.writeln;
// fıstıkçı şahap
setNames(); // formatted name
gidenVeri = Data(getNames.expand);
}
gidenVeri.writeln; // Fıstıkçı ŞAHAP
}
(DEVAMI GELECEK)