Dart Kortejlar (Tuples)

Dart 3.0 versiyasidan boshlab Dart dasturlash tiliga kortejlar nomli yangi tur qo’shildi. Kortejlar anonim, o’zgarmas tur bo’lib, to’plam turlari kabi bir nechta o’zgaruvchilarni bir o’zgaruvchida saqlash, birlashtirish imkonini beradi. Kortejlar aniq o’lchamga ega bo’ladi ya’ni o’lchami qat’iy, har xil turdagi qiymatlarni o’zida saqlashi va yaratib ketilishi kerak.

Kortej – boshqa dasturlash tillarida ham shu kabi ma’lumotlar turi mavjud. Masalan, oddiy misol:

void main() {
var tuple = (1, 2.3, "UzbeKdevs");
print(tuple);
}
>> {1, 2.3, UzbeKdevs}

Bu yerda tuple nomli kortejni yaratamiz. U uch elementdan iborat: 1 - butun son, 2.3 – haqiqiy son, UzbekDevs – satr. Kortejni ko’rish uchun print() funksiyasidan foydalanamiz.

Yodda tuting!

Kortejni yaratish uchun () – qavslar qo’llaniladi va uning elementlari bir-biridan vergul bilan ajratib yoziladi.

Kortejni yaratishda uning elementlari qaysi turdagi ketma-ketlikda ekanligini belgilab, keyin qiymatlarni berib yaratish mumkin. Yuqoridagi berilgan misolda kortej elementlari turi avtomatik aniqlab olinmoqda ya’ni tuple o’zgaruvchisi var turida berilgani uchun. O’zgaruvchi turini ko’rganimizda quyidagi natijani ko’rsatadi:

void main() {
var tuple = (1, 2.3, "UzbeKdevs");
print(tuple);
}
>> (int, double, String)

Ammo biz turni ham aniq belgilab, ko’rsatishimiz mumkin. Mana bu kabi:

void main() {
(int, double, String) tuple = (1, 2.3, "UzbeKdevs");
print(tuple);
}
>> {1, 2.3, UzbeKdevs}

Kortej qiymatlari uning turdagi ketme-ketligiga mos tushishi kerak. Aks holda xatolikka duch kelasiz: (rasmga qarang)

Kortej elementlariga kirish uchun ularning tartib raqami ishlatiladi (raqamlash 1 dan boshalanadi) va undan oldin $ belgisi qo’yiladi:

void main() {
var tuple = (1, 2.3, "UzbeKdevs");
print(tuple.$1);
print(tuple.$2);
}
>> 1 >> 2.3

tuple.$3 – orqali uning 3-elementiga havolani ifodalaymiz.

Kortejning har bir elementiga murojaat etish uchun unga nom berib, murojaat etishimiz mumkin:

void main() {
var tuple = (sayt: "Uzbekdevs", age:2);
print(tuple.sayt);
print(tuple.age);
}
>> Uzbekdevs >> 2

Bu usul xuddi Map turi elementiga o’xshash bo’ladi.

Tur va uning nomini aniq ko’rsatib o’tib, keyin qiymat berish:

void main() {
({String sayt, int age}) tuple = (sayt: "Uzbekdevs", age:2);
print(tuple.sayt);
print(tuple.age);
}
>> Uzbekdevs >> 2

Nomli va nomsiz kortej elementlari ham mavjud bo’lishi mumkin. Bunda nomli elementlar nomsiz elementlardan keyin keladi:

void main() {
var tuple = ("Uzbekdevs", age:2);
print(tuple.$1);
print(tuple.age);
}
>> Uzbekdevs >> 2

Kortejlarni bir-biri bilan solishtirish mumkin. Solishtirishda kortejlar elementlari ketma-ket taqqoslanadi:

void main() {
var sayt = ("Uzbekdevs", age:2);
var tuple = ("Uzbekdevs", 2);
var kortej = ("Uzbekdevs", 2);
print(kortej == tuple);
print(tuple == sayt);
}
>> true >> false

Nomli va nomsiz elementlardan iborat va faqat nomsiz elementlardan iborat bo’lgan kortejlar bir-biriga teng bo’lmaydi.