0Pricing
Swift Academy · درس

دلالات فهارس ArraySlice

افهم سبب احتفاظ فهارس المقاطع بمواضعها الأصلية.

دلالات فهارس ArraySlice درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.

تحتفظ الشرائح بالفهرسة الأصلية

من المفاجآت المهمة أن ArraySlice لا يعيد الفهرسة بدءًا من الصفر. بل يحتفظ بالفهرس نفسه الذي كان له في المصفوفة الأصلية.

let arr = [10, 20, 30, 40, 50]
let slice = arr[2..<5]
print(slice.startIndex)
print(slice.endIndex)

لا يكون startIndex صفرًا دائمًا

تساوي قيمة startIndex في الشريحة الحد السفلي المستخدم لإنشائها. في arr[2..<5] يكون فهرس البداية هو 2.

let arr = [1, 2, 3, 4, 5, 6]
let slice = arr[3..<6]
print("start:", slice.startIndex)
print("first value:", slice[slice.startIndex])

الفهرسة في شريحة

بما أن الفهارس محفوظة، يجب استخدام الفهارس الخاصة بالشريحة. سيؤدي الوصول إلى slice[0] في شريحة تبدأ عند الفهرس 2 إلى تعطل البرنامج أثناء التشغيل.

let arr = [100, 200, 300, 400]
let slice = arr[2..<4]
print(slice[2])
print(slice[3])

استخدام startIndex بأمان

للحصول على العنصر الأول بغض النظر عن موضع بداية الشريحة، استخدم slice.first أو slice[slice.startIndex].

let arr = [5, 6, 7, 8, 9]
let slice = arr[2..<5]
print(slice.first ?? -1)
print(slice[slice.startIndex])

يشير endIndex إلى ما بعد الأخير

كما هو الحال في المصفوفات، يشير endIndex إلى موضع واحد بعد آخر عنصر صالح. وتُعد الفهرسة عند endIndex غير صالحة.

let arr = [11, 22, 33, 44]
let slice = arr[1..<3]
print("endIndex:", slice.endIndex)
print("last valid:", slice[slice.endIndex - 1])

العد مقابل الفهرسة

تمثل قيمة count في الشريحة عدد العناصر، وقد تختلف عن قيمة endIndex الخاصة بها. لا تفترض أبدًا أن count يساوي الفهرس الأخير.

let arr = [0, 1, 2, 3, 4, 5]
let slice = arr[3..<6]
print("count:", slice.count)
print("startIndex:", slice.startIndex)

خاصية indices

استخدم خاصية indices للتكرار بأمان على نطاق الفهارس الصالحة في الشريحة.

let arr = [10, 20, 30, 40, 50]
let slice = arr[1..<4]
for i in slice.indices {
    print(i, slice[i])
}

سبب الاحتفاظ بالفهرسات

يتيح الاحتفاظ بالفهرسات ربط موضع في الشريحة بالمصفوفة الأصلية دون الحاجة إلى إدارة معلومات إضافية. ويكون الفهرس الذي تعثر عليه صالحًا في المصفوفة الأصلية أيضًا.

let arr = ["a", "b", "c", "d", "e"]
let slice = arr[2..<5]
if let idx = slice.firstIndex(of: "d") {
    print("found at parent index:", idx)
    print("parent has:", arr[idx])
}

يعيد enumerate الترقيم إلى الصفر

إذا أردت مواضع تبدأ من الصفر، فاستخدم enumerated(). فهو ينتج إزاحات تبدأ من 0 بغض النظر عن قيمة startIndex في الشريحة.

let arr = [9, 8, 7, 6, 5]
let slice = arr[2..<5]
for (offset, value) in slice.enumerated() {
    print(offset, value)
}

المسافة من البداية

لحساب إزاحة تبدأ من الصفر انطلاقًا من فهرس، استخدم distance(from:to:).

let arr = [1, 2, 3, 4, 5]
let slice = arr[2..<5]
let idx = slice.startIndex + 1
let offset = slice.distance(from: slice.startIndex, to: idx)
print("offset:", offset, "value:", slice[idx])

خطأ شائع

يُعد نسيان احتفاظ الشرائح بفهرسات المصفوفة الأصلية أحد أكثر أخطاء Swift شيوعًا. فضّل دائمًا first أو enumerated() أو startIndex على قيمة 0 ثابتة.

let arr = [100, 200, 300, 400, 500]
let slice = arr[3..<5]
// Safe: use first, not slice[0]
print(slice.first ?? 0)

تحقق سريع

حلّل فهارس الشرائح.

مراجعة

يحتفظ ArraySlice بفهرسات المصفوفة الأصلية: إذ إن startIndex الخاص به هو الحد السفلي، وليس الصفر. استخدم first أو startIndex أو indices أو enumerated() للوصول الآمن، ولا تستخدم أبدًا قيمة 0 ثابتة.

let slice = [5, 6, 7, 8, 9][3..<5]
print(slice.startIndex, slice.first ?? -1)

الأسئلة الشائعة

هل درس «دلالات فهارس ArraySlice» مجاني؟

نعم — نص درس «دلالات فهارس ArraySlice» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.

ماذا ستتعلم في «دلالات فهارس ArraySlice»؟

افهم سبب احتفاظ فهارس المقاطع بمواضعها الأصلية. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟

لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «دلالات فهارس ArraySlice»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟

نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إنشاء المقاطع باستخدام النطاقات
  2. دلالات فهارس ArraySlice
  3. تحويل المقاطع مجددًا إلى مصفوفات
  4. ‏prefix و suffix و dropFirst
← العودة إلى Swift Academy