Takrorlanuvchilar (Iterables) — elementlarni ketma-ket aylanib chiqish mumkin bo’lgan to’plamlar uchun umumiy tushuncha. List va Set — bularning bari Iterable. Bu umumiy asos tufayli ular bir xil kuchli metodlar (map, where, reduce) bilan ishlaydi. Iterable’ni tushunish Dart’da to’plamlar bilan ustalik bilan ishlashning kalitidir.
Iterable — elementlarni ketma-ket qaytara oladigan to’plamlar uchun umumiy interfeys.
ListvaSetuning turlaridir.
Iterable metodlari
Har qanday Iterable boy metodlarga ega. Ularni jadvalda ko’ramiz:
| Metod | Vazifasi |
|---|---|
map() |
har elementni o’zgartiradi |
where() |
shart bo’yicha filtrlaydi |
reduce() |
bitta qiymatga jamlaydi |
forEach() |
har elementga amal qo’llaydi |
any() |
kamida bittasi shartga mos |
every() |
hammasi shartga mos |
map va where
map har elementni o’zgartiradi, where esa shart bo’yicha filtrlaydi:
void main() {
var sonlar = [1, 2, 3, 4, 5];
var juftlar = sonlar.where((n) => n % 2 == 0);
var kvadratlar = sonlar.map((n) => n * n);
print(juftlar.toList());
print(kvadratlar.toList());
}
[2, 4]
[1, 4, 9, 16, 25]
where juft sonlarni ajratdi, map har birini kvadratga ko’tardi. .toList() natijani ro’yxatga aylantiradi. Bu metodlar zanjirlab ham ishlatilishi mumkin.
reduce — jamlash
reduce barcha elementlarni bitta qiymatga jamlaydi. Masalan, yig’indi:
void main() {
var sonlar = [10, 20, 30, 40];
var yigindi = sonlar.reduce((a, b) => a + b);
print("Yig'indi: $yigindi");
}
Yig'indi: 100
reduce elementlarni birma-bir qo’shib, yakuniy natijani berdi. (a, b) => a + b — har qadamda ikki qiymatni qanday birlashtirishni bildiradi.
any va every
any kamida bitta element shartga mos kelsa true, every esa hammasi mos kelsa true qaytaradi:
void main() {
var yoshlar = [26, 30, 22, 28];
print(yoshlar.any((y) => y > 29)); // kamida bittasi 29 dan katta?
print(yoshlar.every((y) => y >= 18)); // hammasi voyaga yetganmi?
}
true
true
any — 30 borligi uchun true; every — hammasi 18 dan katta bo’lgani uchun true. Bu tekshiruvlar ma’lumotni tahlil qilishda juda foydali.
Xulosa
Bu bo’limda Iterable tushunchasini va uning kuchli metodlarini — map, where, reduce, any, every — ko’rib chiqdik. Bu metodlar List va Set bilan bir xil ishlaydi. Ular Dart’ning funksional kuchining asosidir. Keyingi darsda turlarni o’zgartirish (konvertatsiya) ga o’tamiz.