الرموز الفرعية للفهرسة المخصّصة
عرّف رموزًا فرعية مخصّصة لقراءة العناصر وكتابتها باستخدام صياغة شبيهة بالمصفوفات، وأضف وصولًا آمنًا، وادعم الفهرسة متعددة المعلمات، وحتى الرموز الفرعية الساكنة.
الرموز الفرعية للفهرسة المخصّصة درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.
نظرة عامة
استخدم الفهارس للوصول إلى البيانات باستخدام صيغة الأقواس المربعة. ويمكنك جعلها للقراءة فقط أو للقراءة والكتابة، بل ويمكنها قبول فهارس متعددة.
فهرس للقراءة والكتابة
أنشئ فهرسًا باستخدام get/set لإتاحة الوصول إلى التخزين الداخلي بصيغة شبيهة بصيغة المصفوفات.
struct Box {
private var items: [String] = []
init(_ values: [String]) { self.items = values }
subscript(index: Int) -> String {
get { items[index] } // may trap if out of bounds (like Array)
set { items[index] = newValue }
}
}
var b = Box(["a","b","c"])
print(b[1]) // "b"
b[1] = "B"
print(b[1]) // "B"فهرس آمن
أعِد قيمة اختيارية لتجنب الأخطاء عند استخدام فهارس غير صالحة: إنه فهرس آمن وسهل الاستخدام.
extension Array {
subscript(safe i: Int) -> Element? {
return indices.contains(i) ? self[i] : nil
}
}
let arr = [10,20]
print(arr[safe: 1] ?? -1) // 20
print(arr[safe: 5] ?? -1) // -1معلمات متعددة
يمكن للفهرس قبول معلمات متعددة—وهو مناسب للمصفوفات أو للوصول باستخدام الإحداثيات.
struct Matrix {
let rows: Int, cols: Int
private var grid: [Int]
init(rows: Int, cols: Int, fill: Int = 0) {
self.rows = rows; self.cols = cols
self.grid = Array(repeating: fill, count: rows*cols)
}
private func index(_ r: Int, _ c: Int) -> Int { r*cols + c }
subscript(r: Int, c: Int) -> Int {
get { grid[index(r,c)] }
set { grid[index(r,c)] = newValue }
}
}
var m = Matrix(rows: 2, cols: 3)
m[0, 2] = 7
print(m[0, 2])فهرس النوع
أضف فهرسًا نوعيًا باستخدام static للفهرسة على النوع نفسه، لا على مثيل.
struct Roman {
static let map: [Int:String] = [1:"I", 5:"V", 10:"X"]
static subscript(_ n: Int) -> String? {
return map[n]
}
}
print(Roman[5] ?? "?") // "V"نصائح
نصائح:
- فضّل إرجاع قيم اختيارية للوصول الآمن.
- حافظ على بساطة الفهارس؛ فالمنطق المكلف مكانه في الأساليب.
- سمِّ المعلمات بوضوح، مثل
[row:col:].
معنى الفهارس
تحقق سريع: ما الذي تتيحه الفهارس؟
مراجعة
مراجعة: أنشئ فهارس للقراءة والكتابة، وأضف أدوات وصول اختيارية آمنة، وادعم الفهرسة باستخدام معلمات متعددة، بل وعرّف فهارس نوعية أيضًا.
الأسئلة الشائعة
هل درس «الرموز الفرعية للفهرسة المخصّصة» مجاني؟
نعم — نص درس «الرموز الفرعية للفهرسة المخصّصة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.
ماذا ستتعلم في «الرموز الفرعية للفهرسة المخصّصة»؟
عرّف رموزًا فرعية مخصّصة لقراءة العناصر وكتابتها باستخدام صياغة شبيهة بالمصفوفات، وأضف وصولًا آمنًا، وادعم الفهرسة متعددة المعلمات، وحتى الرموز الفرعية الساكنة. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «الرموز الفرعية للفهرسة المخصّصة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الخصائص والرموز الفرعية
- lazy ومراقبات الخصائص
- الخصائص المحسوبة باستخدام get/set
- الرموز الفرعية للفهرسة المخصّصة