تقطيع المصفوفات - الجزء الأول
جزء من قسم الأساسيات في رحلة Swift على Coddy. الدرس 73 من 86.
أحيانًا لا تحتاج إلى مصفوفة كاملة، بل إلى جزء منها فقط. يسهّل Swift استخراج مجموعة فرعية من العناصر باستخدام تقطيع المصفوفة مع عوامل النطاق.
للحصول على شريحة، تستخدم نطاقًا داخل أقواس الفهرسة. يستخدم الأسلوب الأكثر شيوعًا عامل النطاق نصف المفتوح (..<)، الذي يتضمن فهرس البداية لكنه يستبعد فهرس النهاية:
let numbers = [10, 20, 30, 40, 50]
let slice = numbers[1..<4]
print(slice) // [20, 30, 40]هنا، تمنحنا 1..<4 العناصر الموجودة عند الفهارس 1 و2 و3، ولكن ليس عند الفهرس 4. وهذا مفيد عندما تعرف بالضبط أين تريد التوقّف.
إذا أردت تضمين فهرس النهاية، فاستخدم عامل النطاق المغلق (...):
let letters = ["a", "b", "c", "d", "e"]
let slice = letters[1...3]
print(slice) // ["b", "c", "d"]تفصيل مهم: نتيجة التقسيم هي ArraySlice، وليست Array عادية. إذا كنت بحاجة إلى مصفوفة حقيقية، فغلّفها باستخدام Array():
let original = [1, 2, 3, 4, 5]
let sliced = Array(original[0..<3])
print(sliced) // [1, 2, 3]التحدي
سهلاكتب دالة getMiddleElements تأخذ numbers وstart وend وتُرجع slice من المصفوفة بدءًا من فهرس start وحتى فهرس end (ولكن دون تضمينه).
استخدم عامل النطاق مفتوح الطرفين (..<) لاستخراج الجزء المحدد من المصفوفة وإرجاعه كمصفوفة عادية.
المعلمات:
numbers([Int]): المصفوفة المطلوب إجراء slice لهاstart(Int): فهرس البداية (مضمّن)end(Int]): فهرس النهاية (غير مضمّن)
القيمة المُعادة: مصفوفة تحتوي على العناصر بدءًا من فهرس start وحتى فهرس end (ولكن دون تضمينه) ([Int])
مثال: إذا كانت numbers هي [10, 20, 30, 40, 50, 60]، وكانت start هي 1، وكانت end هي 4، فيجب أن تُرجع الدالة [20, 30, 40].
جرّب بنفسك
func getMiddleElements(numbers: [Int], start: Int, end: Int) -> [Int] {
// اكتب الكود هنا
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةالإسناد المركبمراجعة - عمليات رياضية بسيطةمعاملات المقارنة7أساسيات الإدخال والإخراج
دالة الطباعةتضمين النصوصإدخال ReadLineتحويل الأنواعمراجعة - حتى 120مراجعة - True أو False10الدوال
تعريف دالةالمعاملات والوسائطقيم الإرجاعتسميات الوسائطمراجعة - دالة Sigmaمراجعة - دالة Validationالقيم الافتراضية2المتغيرات
Let مقابل Varتوصيف الأنواع (Type Annotations)الأرقامStringBooleanقواعد التسميةمراجعة - تهيئة المتغيرات5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعامل الثلاثي (Ternary Operator)8حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على المدخلات14المصفوفات المتقدمة
تقطيع المصفوفات - الجزء الأولتقطيع المصفوفات - الجزء الثانيمعاملات المتسلسلاتدالة Contains3القيم الاختيارية (Optionals)
ما هي القيم الاختياريةفك القيم باستخدام If Letاستخدام Guard Letمعامل دمج Nilمراجعة - فك القيم بأمان9حلقات التكرار
حلقة For-Inحلقة Whileحلقة Repeat-WhileBreakContinueمراجعة - المضروب (Factorial)النطاقات في حلقات التكرارالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)تدرّب بنفسك: Playground لـ Swift