take و skip في Dart مع أمثلة 🚀

في 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

🔹 التفسير:

  1. skip(2): يتجاوز أول عنصرين (10, 20).
  2. 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)) لاستخراج نطاق معين من القائمة.