English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
ببساطة، المفهوم هو نوع بيانات، ولكنه نوع بيانات يحتوي فقط على بيانات مخصصة معينة، وهو مجموعة من البيانات التي تتمتع بمزايا مشتركة.
المفاهيم في Swift تشبه هيكل Objective C و C، وتعمل وظائف المفاهيم كالتالي:
يُعلن في الفئة، يمكن الوصول إلى قيمها من خلال تعميم الفئة.
يمكن أن تعرف المفاهيم أيضًا مكونات التأسيس (constructors) لتقديم قيمة بدءية للعضو؛ يمكن توسيع وظائفها على أساس التنفيذ الأصلي.
يمكن الالتزام بالمعاهدات (protocols) لتقديم وظائف قياسية.
في Swift، يتم استخدام الكلمة المفتاحية enum لإنشاء المفاهيم ووضع تعريفها الكامل داخل زوجين من الأسهم الكبيرة:
enum enumname { // تعريف المفهوم هنا {}
على سبيل المثال، نحدد ما يلي كمفهوم يوضح الأيام من الأسبوع:
import Cocoa // تعريف المفهوم enum DaysofaWeek { case Sunday case Monday case TUESDAY case WEDNESDAY case THURSDAY case FRIDAY case Saturday {} var weekDay = DaysofaWeek.THURSDAY weekDay = .THURSDAY switch weekDay { case .Sunday: print(\"السبت\") case .Monday: print(\"الإثنين\") case .TUESDAY: print(\"الثلاثاء\") case .WEDNESDAY: print(\"الأربعاء\") case .THURSDAY: print(\"الجمعة\") case .FRIDAY: print(\"الخميس\") case .Saturday: print(\"الجمعة\") {}
نتيجة تنفيذ البرنامج أعلاه هي:
الجمعة
المقدار المحدد في المفهوم المفهوم (مثل Sunday
،Monday
،……
وSaturday
هذا هو المقدار المحدد في هذا المفهومقيمة العضو(أوالمعلمون)。case
كلمة المفتاحية تعني أن قيمة جديدة للعضو ستُحدد في سطر جديد.
ملاحظة:
على عكس C و Objective-C، لا يتم تعيين أعضاء القائمة التسميات في Swift إلى قيمة نوعها الأساسي عند إنشائها. في المثال السابق،DaysofaWeek
في هذا المثال،Sunday
،Monday
،……
وSaturday
لن يتم تعيينها تلقائيًا إلى0
،1
،……
و6
على العكس من ذلك، فإن أعضاء القائمة التسميات لديهم قيم مكتوبة مسبقًا، والتي تكون مكتوبة بالفعل.DaysofaWeek
نوع.
var weekDay = DaysofaWeek.THURSDAY
weekDay
نوعه يمكن معرفته عندDaysofaWeek
من الممكن استنتاج نوعها عند تعيين قيمته كواحدة من القيم المحتملة لها.weekDay
تم إعلانها كـDaysofaWeek
، يمكنك استخدام لغة مختصرة (.) لضبطها على أخرىDaysofaWeek
القيمة:
var weekDay = .THURSDAY
عندweekDay
عندما تكون نوع البيانات معروفًا، يمكن تجاهل اسم القائمة التسميات عند إعادة تعيينها. يمكن أن تجعل القيم المحددة بوضوح النوع من القائمة التسميات كودًا أكثر وضوحًا.
يمكن تقسيم القائمة التسميات إلى قيم مرتبطة وقيم أصلية.
القيم المرتبطة | القيمة الأساسية |
---|---|
نوع البيانات مختلف | نوع البيانات نفسه |
مثال: enum {10,0.8,"Hello"} | مثال: enum {10,35,50} |
إنشاء القيم يعتمد على المستقرر أو المتغير | القيم المسبقًا مليئة |
تُضبط القيم المرتبطة عندما تُنشئ مستقررًا أو متغيرًا جديدًا بناءً على عضو قائمة التسميات، ويمكن أن تكون القيمة مختلفة في كل مرة تقوم بذلك. | القيم الأصلية دائمًا تكون نفسها |
في هذا المثال، نحدد نوعًا مصفوفة يُدعى Student، يمكن أن يكون String لنوع Name، أو قيمة مرتبطة لنوع Mark (Int,Int,Int).
import Cocoa enum Student{ case Name(String) case Mark(Int,Int,Int) {} var studDetails = Student.Name("w3codebox") var studMarks = Student.Mark(98,97,95) switch studMarks { case .Name(let studName): print("اسم الطالب هو: \(studName)\). case .Mark(let Mark1, let Mark2, let Mark3): print("النسبة المئوية للطلاب هي: \(Mark1),\(Mark2),\(Mark3)\). {}
نتيجة تنفيذ البرنامج أعلاه هي:
النسبة المئوية للطلاب هي: 98,97,95.
يمكن أن تكون القيمة الأساسية نصًا، رمزًا، أو أي قيمة عددية أو قيمة عشرية. يجب أن تكون القيمة الأساسية فريدة في بيانات القائمة.
في القوائم التي تكون قيمتها الأساسية عددًا، لا تحتاج إلى تعيين كل عضو بشكل داخلي، حيث سيقوم Swift بتعيين القيم تلقائيًا لك.
على سبيل المثال، عند استخدام العدد كقيمة أساسية، يتم تمرير القيم التالية بشكل تلقائي بزيادة 1. إذا لم يتم تعيين القيمة الأولى، سيتم تعيينها تلقائيًا إلى 0.
import Cocoa enum Month: Int { case January = 1, February, March, April, May, June, July, August, September, October, November, December {} let yearMonth = Month.May.rawValue print("شهر العدد هو: \(yearMonth)。")
نتيجة تنفيذ البرنامج أعلاه هي:
شهر العدد هو: 5.