في Dart، يتم استخدام take
و skip
لاستخراج جزء من List
أو Iterable
بطريقة مرنة.
🔹 take(n)
🔹 تُستخدم take(n)
لأخذ أول n
عناصر من القائمة.
🔹 إذا كانت القائمة تحتوي على عدد عناصر أقل من n
، فسيتم أخذ جميع العناصر المتاحة.
🔹 تُعيد كائن Iterable
، وإذا كنت بحاجة إلى قائمة (List
)، استخدم .toList()
.
📌 مثال 1: أخذ أول 3 عناصر
void main() {
List<int> numbers = [10, 20, 30, 40, 50];
var firstThree = numbers.take(3);
print(firstThree); // Output: (10, 20, 30)
}
Dart🔹 التفسير:
- يتم استخراج أول 3 عناصر (
10, 20, 30
).
📌 مثال 2: محاولة أخذ أكثر من حجم القائمة
void main() {
List<String> words = ["Dart", "Flutter"];
var firstFive = words.take(5);
print(firstFive); // Output: (Dart, Flutter)
}
Dart🔹 التفسير:
- القائمة تحتوي على عنصرين فقط، لذا يتم إرجاع جميع العناصر.
📌 مثال 3: تحويل النتيجة إلى List
void main() {
List<int> numbers = [5, 10, 15, 20];
var subset = numbers.take(2).toList();
print(subset); // Output: [5, 10]
}
Dart🔹 التفسير:
- يتم أخذ أول عنصرين (
5, 10
) وتحويلهما إلىList
.
🔹 skip(n)
🔹 تُستخدم skip(n)
لتجاهل أول n
عناصر وإرجاع الباقي.
🔹 إذا كان n
أكبر من أو يساوي طول القائمة، فستُعيد قائمة فارغة ([]
).
🔹 تُعيد كائن Iterable
، وإذا كنت بحاجة إلى قائمة (List
)، استخدم .toList()
.
📌 مثال 1: تجاهل أول 3 عناصر
void main() {
List<int> numbers = [10, 20, 30, 40, 50];
var remaining = numbers.skip(3);
print(remaining); // Output: (40, 50)
}
Dart🔹 التفسير:
- يتم تجاهل أول
3
عناصر (10, 20, 30
) وإرجاع الباقي (40, 50
).
📌 مثال 2: تجاوز جميع العناصر
void main() {
List<String> names = ["أحمد", "محمد", "علي"];
var emptyList = names.skip(3);
print(emptyList); // Output: ()
}
Dart🔹 التفسير:
- يتم تجاوز جميع العناصر، لذا يتم إرجاع
Iterable
فارغ.
📌 مثال 3: تجاوز أول عنصرين ثم تحويل النتيجة إلى List
void main() {
List<int> numbers = [5, 10, 15, 20, 25];
var newList = numbers.skip(2).toList();
print(newList); // Output: [15, 20, 25]
}
Dart🔹 التفسير:
- يتم تجاوز أول عنصرين (
5, 10
) وتحويل النتيجة إلىList
.
🔹 استخدام take
و skip
معًا
يمكنك الجمع بين take
و skip
لاختيار نطاق معين من القائمة.
📌 مثال 1: استخراج العناصر من الفهرس 2
إلى 4
void main() {
List<int> numbers = [10, 20, 30, 40, 50, 60];
var middleRange = numbers.skip(2).take(3);
print(middleRange); // Output: (30, 40, 50)
}
Dart🔹 التفسير:
skip(2)
: يتجاوز أول عنصرين (10, 20
).take(3)
: يأخذ 3 عناصر بعد التجاوز (30, 40, 50
).
💡 الفرق بين take
و skip
الميثود | ماذا تفعل؟ | مثال |
---|---|---|
take(n) | يأخذ أول n عناصر من القائمة. | list.take(3) |
skip(n) | يتجاهل أول n عناصر ويعيد الباقي. | list.skip(2) |
🎯 متى تستخدم take
و skip
؟
✅ استخدم take(n)
عندما تريد استخراج أول n
عناصر فقط.
✅ استخدم skip(n)
عندما تريد تجاهل أول n
عناصر والعمل على الباقي.
✅ استخدمهما معًا (skip(n).take(m)
) لاستخراج نطاق معين من القائمة.