في Dart، تحتوي الكائنات مثل List
على العديد من الدوال المفيدة لمعالجة البيانات بسهولة.
سنتناول اليوم ثلاث دوال شائعة ومفيدة عند التعامل مع القوائم:
sublist()
→ استخراج جزء من القائمة.shuffle()
→ خلط عناصر القائمة عشوائيًا.asMap()
→ تحويل القائمة إلىMap
مع مفاتيح رقمية.
🔹 1. sublist()
– استخراج جزء من القائمة
🔹 تُستخدم sublist()
لإنشاء قائمة فرعية من قائمة رئيسية، بدءًا من فهرس معين إلى فهرس آخر اختياري.
📌 الصيغة العامة:
dartنسختحريرList<T> sublist(int start, [int? end])
start
→ الفهرس الذي يبدأ منه القص.end
(اختياري) → الفهرس الذي ينتهي عنده القص (غير مشمول).- إذا لم يتم تحديد
end
، سيتم أخذ العناصر حتى نهاية القائمة.
✨ مثال 1: استخراج جزء من القائمة
dartنسختحريرvoid main() {
List<String> names = ['Ali', 'Sara', 'Omar', 'Laila', 'Khaled'];
List<String> part1 = names.sublist(1, 4); // من الفهرس 1 إلى 3
List<String> part2 = names.sublist(2); // من الفهرس 2 حتى النهاية
print(part1); // ['Sara', 'Omar', 'Laila']
print(part2); // ['Omar', 'Laila', 'Khaled']
}
🔹 الناتج:
cssنسختحرير['Sara', 'Omar', 'Laila']
['Omar', 'Laila', 'Khaled']
📌 ملاحظات:
- العنصر عند
end
غير مشمول. - إذا لم تحدد
end
، سيتم أخذ العناصر حتى نهاية القائمة.
🔹 2. shuffle()
– خلط عناصر القائمة عشوائيًا
🔹 تُستخدم shuffle()
لتغيير ترتيب العناصر في القائمة عشوائيًا.
🔹 التغيير يتم داخل نفس القائمة ولا تُرجع دالة جديدة.
📌 الصيغة العامة:
dartنسختحريرvoid shuffle([Random? random])
- يمكن تمرير
Random
لتحديد مصدر العشوائية، لكن غالبًا يتم استخدامها بدون معاملات.
✨ مثال 2: خلط عناصر القائمة عشوائيًا
dartنسختحريرimport 'dart:math'; // مطلوب لاستخدام العشوائية
void main() {
List<int> numbers = [1, 2, 3, 4, 5];
numbers.shuffle(); // خلط العناصر عشوائيًا
print(numbers);
}
🔹 الناتج (يختلف في كل مرة بسبب العشوائية):
csharpنسختحرير[3, 1, 5, 2, 4] // مثال على ترتيب عشوائي
📌 ملاحظات:
shuffle()
تغير ترتيب العناصر داخل نفس القائمة، لذا لا تحتاج إلى إسنادها إلى متغير جديد.- إذا كنت بحاجة إلى قائمة جديدة، انسخ القائمة الأصلية ثم استخدم
shuffle()
.
🔹 3. asMap()
– تحويل القائمة إلى خريطة (Map
)
🔹 تُستخدم asMap()
لتحويل قائمة إلى Map
حيث تكون المفاتيح هي الفهارس والقيم هي عناصر القائمة.
📌 الصيغة العامة:
dartنسختحريرMap<int, T> asMap()
- المفتاح (
Key
) هو الفهرس (int
). - القيمة (
Value
) هي العنصر في ذلك الفهرس.
✨ مثال 3: تحويل قائمة إلى Map
dartنسختحريرvoid main() {
List<String> fruits = ['Apple', 'Banana', 'Cherry'];
Map<int, String> fruitMap = fruits.asMap();
print(fruitMap);
}
🔹 الناتج:
cssنسختحرير{0: 'Apple', 1: 'Banana', 2: 'Cherry'}
📌 ملاحظات:
- الفهارس تصبح المفاتيح (
keys
) في الخريطة (Map
). - القيم تبقى كما هي.
✨ مثال 4: استخدام asMap()
للحصول على قيم معينة
dartنسختحريرvoid main() {
List<String> names = ['Ali', 'Sara', 'Omar'];
Map<int, String> namesMap = names.asMap();
print(namesMap[1]); // ✅ طباعة العنصر عند الفهرس 1 → 'Sara'
}
🔹 الناتج:
nginxنسختحريرSara
📌 يمكنك الوصول إلى القيم باستخدام الفهارس كالمفاتيح (keys
).
🔹 مقارنة بين الدوال الثلاث
الدالة | الوظيفة | يُرجع | يُعدل القائمة الأصلية |
---|---|---|---|
sublist(start, [end]) | استخراج جزء من القائمة | قائمة جديدة | ❌ لا |
shuffle() | خلط عناصر القائمة عشوائيًا | void | ✅ نعم |
asMap() | تحويل القائمة إلى Map | كائن Map<int, T> | ❌ لا |
🔹 الخلاصة
✅ sublist(start, [end])
لإنشاء قائمة فرعية من قائمة رئيسية.
✅ shuffle()
لخلط عناصر القائمة عشوائيًا داخل نفس القائمة.
✅ asMap()
لتحويل قائمة إلى Map
حيث تكون المفاتيح هي الفهارس والقيم هي العناصر.