(2) Loop In Set

🔁 التكرار (Looping) في Set في Dart

مع شرح الأنواع + ٢ مثال لكل نوع

🧱 أولًا: ما هو الـ Set؟
  • هو مجموعة غير مرتبة من العناصر.
  • لا يسمح بالتكرار (أي لا توجد قيم مكررة داخله).
  • يتم الوصول للعناصر بالتكرار فقط (لا يوجد index مثل القوائم).

مثال بسيط:

Set<String> fruits = {'apple', 'banana', 'orange', 'banana'};  // banana ستُضاف مرة واحدة فقط

print(fruits);  // {apple, banana, orange}
JavaScript
🔁 طرق التكرار على Set

في Dart، يمكنك التكرار على Set باستخدام:

1. for-in loop
2. .forEach() method
3. تحويله إلى List مع for العادي (اختياري)
✅ 1. التكرار باستخدام for-in
✅ الاستخدام:

أبسط وأشهر طريقة.

📌 المثال 1:
Set<String> names = {'Ali', 'Sara', 'Omar'};

for (var name in names) {
  print(name);
}
JavaScript
📌 المثال 2:
Set<int> numbers = {10, 20, 30};

for (var number in numbers) {
  print(number * 2);  // يطبع 20، 40، 60
}
JavaScript
✅ 2. التكرار باستخدام .forEach()
✅ الاستخدام:

دالة تُنفذ وظيفة لكل عنصر.

📌 المثال 1:
Set<String> countries = {'Egypt', 'Jordan', 'Iraq'};

countries.forEach((country) {
  print('Country: $country');
});
JavaScript
📌 المثال 2:
Set<int> numbers = {1, 2, 3};

numbers.forEach((n) => print(n * n));  // 1, 4, 9
JavaScript
✅ 3. التكرار بتحويل Set إلى List + for

مفيد لو أردت الوصول للعنصر حسب موقعه (index)، لأن Set ليس فيه index.

📌 المثال 1:
Set<String> colors = {'red', 'green', 'blue'};
List<String> colorList = colors.toList();

for (int i = 0; i < colorList.length; i++) {
  print('Color $i: ${colorList[i]}');
}
JavaScript
📌 المثال 2:
Set<double> prices = {10.5, 20.0, 30.5};
List<double> listPrices = prices.toList();

for (int i = 0; i < listPrices.length; i++) {
  print('Price: ${listPrices[i] + 5}');
}
JavaScript
⚠️ ملاحظات مهمة:
  • لا تعتمد على ترتيب العناصر في Set لأن Set غير مرتبة.
  • لو كنت تحتاج ترتيب، استخدم SetListsort().
✅ ملخص سريع:
الطريقةمتى تستخدمها؟فيها index؟
for-inالتكرار العادي والبسيط
.forEach()عند تنفيذ دالة لكل عنصر
toList() + forعند الحاجة للوصول للعناصر حسب الموقع (index)