enum !

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

واذا كنت قد تعاملت او شاهدت سابقا كود قد كتب بـ لغة C ربما انك تعرف انـ enum عبارة عن مجموعة من القيم او الاسماء التي يتم تمثيلها بـ Int ولكن بدل من استخدام الارقام 1,2,3,4 فقد تم استبدالها بـ هذه الاسماء .. مثال لـ طريقة كتابتها بـ لغة C :

enum week {  
sunday, monday, tuesday, wednesday, thursday, friday, saturday  
};

ولكن كما ذكرت سابقا ان الطريقة التي كانت تستخدم فيها بـ لغة C كانت عبارة عن تمثيل لقيم أو اعداد من نوع int الى مسميات مثل الأيام كما في المثال السابق ..

طيب ما الجديد في استخدام enum في swift ..؟!!!

المميز هو كالتالي .. أنه بإمكانك تمثيل اي نوع من البيانات باستخدام enum ! اصبر شوي ! مالمقصود بأي نوع من البيانات ؟

نعم يا عزيزي بامكانك تمثيل مجموعة من القيم ايا كانت سواء Int, Float, String ... etc كـ enum وبالمثال يتضح المقال ..

ربما قد شاهدت شيئا شبيها بهذا !

enum HTTPMethod : String {  
case get  
case post  
case put  
case delete  
...
}

هذه الطريقة تستخدم لتجنب الوقوع في الخطأ خاصة فيما يتعلق بالمقارنات .. ماذا تقصد ؟

عند كتابتي في المثال السابق swift قامت "ضمنياً" بإسناد قيم من نوع string بنفس المسمى الذي قمت بتسميته !

الـ enum مستتخدمه بشكل كبييير جداً في swift وكما هو مذكور في كتاب swift انه يعتبر “Enumerations in Swift are first-class types in their own right.” (بلشت بالترجمة)

الـ enum في swift لديها خصائص زيادة فوق ذلك وكمثال وليس للحصر بامكانك التعامل معها كالتالي ..

بالمقارنة مثلا :

enum UserType : String {  
case user, admin, customer  
}
let userType = UserType.admin  
if userType == .user {  
// write your logic here
}

بامكانك كذلك استخدامها مع switch و init و Protocol و Extension "تم التعامل معها في مقالة Moya" ..

طيب ! بعد هذا الحديث هل عندما تواجهني اي مشكلة برمجية او أقوم التفكير بها أقوم بتحويلها مباشرة إلى enum !

لا يا عزيزي الفكرة من طرح هذا الموضوع هو تجنب الوقوع في الاخطاء البرمجية التي قد تواجهك خلال عملك على التطبيق الذي تقوم بصنعه .. وسأقوم بضرب مجموعة من الامثلة .

  • أيام الاسبوع .
  • الشهور .
  • البوصلة.
  • صيغ الصور التي تقوم بدعمها بتطبيقك .gif .png الخ
  • صيغ الفيديو كذلك.
  • اسماء كواكب المجرة الشمسيه !
  • التعامل مع الـ Barcode.
  • انواع المستخدمين المتوفرين لديك admin, guest .. الخ .

من الأمثلة السابقة ربما تلاحظ ان الامثلة التي قمت بطرحها هي عبارة عن أمثلة لأنواع يتم حصرها بشكل معقول ..

هل لديك أمثلة أقوم بسردها بالأعلى واكتب مثال مخصص لها "ساعدني" !

حسابي في تويتر @SalehAldhobaie

لتحميل المثال : تحميل "سيتم تحديث الرابط حتى يتم اكتمال ٥ أمثلة من اقتراحكم"

وبس ,