البرمجة

تحديث استخدام Map في Swift 3.0 لتعديل مصفوفة الكائنات

في Swift 3.0، تمت إزالة إمكانية استخدام الكلمة المفتاحية var داخل إغلاقات الـ map والحلقات الجديدة بشكل كامل، مما يعني أنه يجب عليك التعامل مع العناصر كـ constants. لذا، لتعديل قيم عناصر مصفوفة داخل إغلاق الـ map في Swift 3.0، يجب عليك استخدام نوع البيانات القابلة للتعديل (Mutable)، مثل الـ inout في متغير الإغلاق.

في سياق استفسارك، إذا كان لديك مصفوفة من الكائنات من نوع Gnome وترغب في تعديل الخصائص في كل كائن داخل إغلاق map، يمكنك فعل ذلك بشكل مشابه للكود التالي:

swift
gnomes = gnomes.map { (gnome: inout Gnome) -> Gnome in gnome.age = 140 return gnome }

ملاحظة أننا استخدمنا inout للإشارة إلى أن المتغير يمكن تعديله داخل الإغلاق. هذا يسمح لك بتعديل الخصائص بشكل مباشر داخل map.

باستخدام هذا النهج، يمكنك تحديث مصفوفتك من الكائنات Gnome بكفاءة وفعالية دون الحاجة إلى حلقة تكرارية تقليدية. يتمثل جمال هذا النهج في إمكانية القيام بالتعديلات بشكل مباشر على الكائنات داخل الإغلاق، مما يوفر رمزًا أنظف وأكثر فعالية.

المزيد من المعلومات

إضافة إلى التعديلات التي تم إجراؤها على لغة Swift مع إصدار 3.0، هناك بعض النقاط الإضافية التي يمكن أن تكون مفيدة لفهم أحدث التطورات في اللغة.

أحد التغييرات الهامة هو الانتقال إلى استخدام الكائنات القابلة للتعديل (Mutable) بشكل أكبر، حيث يشجع Swift على استخدام الهياكل (Structures) بدلاً من الفئات (Classes) حينما يكون ذلك مناسبًا. الهياكل تُعتبر نوعًا من الكائنات القابلة للتعديل، مما يسهل عمليات التعديل دون الحاجة إلى الكثير من الاهتمام بالمشاكل المتعلقة بالمشاركة (Sharing) والإشارات (Reference).

على سبيل المثال، في حالة الـ Gnome، إذا كانت هيكلًا، يمكنك استخدام الأسلوب الذي تم الإشارة إليه في السابق بشكل أكثر فعالية:

swift
struct Gnome { var age: Int // ... أي خصائص إضافية } var gnomes: [Gnome] = // ... قم بتعبئة المصفوفة بالكائنات Gnome gnomes = gnomes.map { var gnome = $0; gnome.age = 140; return gnome }

هنا، نستخدم هيكلًا بدلاً من فئة، ونستفيد من القدرة الطبيعية على تعديل الهيكل بشكل مباشر دون الحاجة إلى inout.

من الجدير بالذكر أيضًا أن Swift تطورت باستمرار منذ إصدار 3.0، وربما تكون هناك تحسينات إضافية أو تغييرات في إصدارات لاحقة، لذا دائمًا يُفضل الرجوع إلى وثائق Swift الرسمية للحصول على أحدث المعلومات.

زر الذهاب إلى الأعلى