تحويل المقاطع مجددًا إلى مصفوفات
حوّل المقطع إلى مصفوفة مستقلة فعلية.
تحويل المقاطع مجددًا إلى مصفوفات درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.
الشرائح ليست مصفوفات
إن ArraySlice نوع مختلف عن Array. وتتوقع العديد من واجهات برمجة التطبيقات النوع Array الفعلي، لذا ستحتاج غالبًا إلى إجراء تحويل.
let original = [1, 2, 3, 4, 5]
let slice = original[1..<4]
print(type(of: slice))Array(slice)
غلّف الشريحة داخل مُهيئ Array(...) لإنشاء مصفوفة جديدة مستقلة، بعناصر منسوخة وفهارس تبدأ من الصفر.
let original = [10, 20, 30, 40, 50]
let slice = original[2..<5]
let array = Array(slice)
print(array)
print(type(of: array))إعادة الفهرسة إلى الصفر
بعد التحويل، تعيد المصفوفة الجديدة الفهرسة بدءًا من 0، على خلاف الشريحة التي احتفظت بفهرسات المصفوفة الأصلية.
let original = [1, 2, 3, 4, 5]
let slice = original[3..<5]
let copy = Array(slice)
print("slice start:", slice.startIndex)
print("array start:", copy.startIndex)ينسخ التحويل التخزين
يفرض التحويل إجراء نسخة. ولا تعود المصفوفة الجديدة تشارك التخزين مع المصفوفة الأصلية، لذا لا يؤثر تعديلها في الأصلية.
let original = [1, 2, 3, 4]
var copy = Array(original[1..<3])
copy[0] = 999
print("original:", original)
print("copy:", copy)إعادة مصفوفات من الدوال
عندما تعيد دالة جزءًا من مصفوفة، حوّل الشريحة حتى يحصل المستدعيون على Array عادية.
func firstThree(of nums: [Int]) -> [Int] {
return Array(nums.prefix(3))
}
print(firstThree(of: [9, 8, 7, 6, 5]))التمرير إلى معاملات Array
إذا كان نوع معامل واجهة برمجة التطبيقات هو [Int]، فيجب تحويل الشريحة قبل تمريرها.
func total(_ values: [Int]) -> Int {
return values.reduce(0, +)
}
let data = [1, 2, 3, 4, 5]
let result = total(Array(data[1..<4]))
print(result)متى لا يكون التحويل ضروريًا
إذا كانت دالتكم تقبل Sequence أو Collection عامًّا، فيمكنكم تمرير الشريحة مباشرةً من دون تحويلها.
func describe<S: Sequence>(_ s: S) where S.Element == Int {
print(Array(s))
}
let arr = [2, 4, 6, 8]
describe(arr[1..<3])المفاضلة في الذاكرة
تتجنب الشرائح عمليات النسخ وتحافظ على التخزين الأصلي حيًّا. إذا احتفظتم بشريحة صغيرة من مصفوفة ضخمة مدة طويلة، فحوّلوها إلى مصفوفة حتى يمكن تحرير المخزن المؤقت الكبير.
let huge = Array(1...1000)
let keep = Array(huge[0..<3]) // small independent copy
print(keep)التحويل إلى Set
يمكنكم أيضًا تمرير الشريحة إلى مُهيئات مجموعات أخرى مثل Set.
let arr = [1, 2, 2, 3, 3, 3]
let uniqueTail = Set(arr[2..<6])
print(uniqueTail.sorted())رحلة ذهاب وإياب
لا مشكلة في أخذ شريحة ثم تحويلها ثم أخذ شريحة منها مرة أخرى. كل عملية تحويل صريحة ويمكن توقعها.
let arr = [10, 20, 30, 40, 50]
let a = Array(arr[1..<4])
let b = Array(a[0..<2])
print(a)
print(b)أفضل ممارسة
واصلوا العمل بالشرائح أثناء إجراء الحسابات، وحوّلوها إلى Array فقط عند الحد الفاصل الذي تخزّنون فيه النتيجة أو تعيدونها.
let arr = [3, 1, 4, 1, 5, 9, 2]
let top3 = Array(arr.sorted(by: >)[0..<3])
print(top3)اختبار سريع
اختبروا تحويل الشرائح.
مراجعة
استخدموا Array(slice) لتحويل ArraySlice إلى مصفوفة مستقلة ذات فهارس تبدأ من الصفر وتخزين منسوخ. أجروا التحويل عند حدود واجهة برمجة التطبيقات، واحتفظوا بالشرائح أثناء الحسابات لتجنب عمليات النسخ الإضافية.
let s = [1, 2, 3, 4, 5][2..<5]
let a = Array(s)
print(a, a.startIndex)الأسئلة الشائعة
هل درس «تحويل المقاطع مجددًا إلى مصفوفات» مجاني؟
نعم — نص درس «تحويل المقاطع مجددًا إلى مصفوفات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.
ماذا ستتعلم في «تحويل المقاطع مجددًا إلى مصفوفات»؟
حوّل المقطع إلى مصفوفة مستقلة فعلية. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «تحويل المقاطع مجددًا إلى مصفوفات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إنشاء المقاطع باستخدام النطاقات
- دلالات فهارس ArraySlice
- تحويل المقاطع مجددًا إلى مصفوفات
- prefix و suffix و dropFirst