English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا المقال، ستتعلم كيفية استخدام جملة التحكم switch لتحكم في مسار تنفيذ البرنامج.
جملة switch هي أيضًا نوع من أنواع جمل التحكم في Swift، مثلif-else,guard، تنفذ إجراءات مختلفة بناءً على الشروط المختلفة.
من مزايا جملة switch أنها يمكن أن تقارن القيمة مع عدة أنماط محتملة. لذا يمكن أن تحل محل شجرة if..else..if الطويلة، وتطابق الأنماط المعقدة.
تتكون نحو جملة switch:
switch متغير/تعبير { حالة value1: // جملة حالة value2: // جملة default: // جملة }
تتعرض جملة التعبير switch مرة واحدة فقط.
انه يقبل التعبير ويقارن القيم بترتيب (السفلي -> الأعلى).
إذا كانت هناك تطابق، يتم تنفيذ الجملة داخل case، وينتهي تنفيذ جملة switch عند الانتهاء من أول حالة تطابق.
إذا لم تطابق أي حالة، فإنه سيتم الانتقال إلى حالة التالية.
إذا لم تطابق أي حالة، فإن كلمة المفتاح default تحدد الأوامر التي سيتم تنفيذها.
ملاحظةكل جملة case يجب أن تحتوي على جملة تنفيذية على الأقل.
let dayOfWeek = 4 switch dayOfWeek { حالة 1: print(السبت) حالة 2: print(الإثنين) حالة 3: print(الجمعة) حالة 4: print(الأربعاء) حالة 5: print(الخميس) case 6: print("Friday") case 7: print("Saturday") default: print("يوم غير صالح") }
عندما تقوم بتشغيل البرنامج أعلاه، الناتج سيكون:
Wednesday
في البرنامج أعلاه، تقوم جملة switch بمقارنة قيمة dayOfWeek مع حالة 1التنسيق لبدء. لأن قيمة dayOfWeek لا تطابق قيمة الحالة الأولى، لذا ستنخفض إلى الحالة التالية حتى يتم تطابق واحد منها.
بسببحالة 4تطابق جملة التعبير switch، لذا سيتم تنفيذ جملة print("الأربعاء") داخل case، وسيتم إنهاء switch case. إذا لم تطابق أي حالة، فإنه سيتم تنفيذdefaultالجمل داخلها.
إذا تم استخدام كلمة المفتاح fallthrough في جملة case، فإن التحكم سيستمر في الاستمرار إلى حالة التالية، حتى إذا لم تطابق قيمة case جملة التعبير switch.
let dayOfWeek = 4 switch dayOfWeek { حالة 1 : print(السبت) حالة 2: print(الإثنين) حالة 3: print(الجمعة) حالة 4: print(الأربعاء) تخطي حالة 5: print(الخميس) case 6: print("Friday") case 7: print("Saturday") default: print("يوم غير صالح") }
عندما تقوم بتشغيل البرنامج أعلاه، الناتج سيكون:
Wednesday Thursday
في البرنامج أعلاه، تنفذ جملة case 4 إجراء print("Wednesday")، وسيستمر الكلمة المفتاحية fallthrough في تنفيذ case 5. تنفذ جملة print("Thursday") في case 5، حتى لو لم تطابق cas تعبير switch. لذلك، يمكنك رؤية输出来 Thursday في الشاشة التشغيل.
let programmingLanguage = (name: "Go", version: 10) switch programmingLanguage { case (let name, let version) where (version < 0 && name.count < 0): print("الإدخال غير صالح") case ("Swift", let version) where version == 4: print("إيجاد أحدث إصدار من Swift") case ("Swift", ..< 4): print("إيجاد إصدار قديم من Swift") case ("Swift", 4...): print("إصدار Swift أكبر من 4 لم يتم إصداره بعد") case ("Taylor Swift", 30): print("يا إلهي. هذا هو تيلور سويفت") case (let name, let version): print(""" لغة البرمجة:\(name) الإصدار: \(version) الحالة: غير موجود """ }
عندما تقوم بتشغيل البرنامج أعلاه، الناتج سيكون:
لغة البرمجة: Go الإصدار: 10 الحالة: غير موجود
في البرنامج أعلاه، سنقوم بمطابقة تعبير النوع التجميعي programmingLanguage مع الحالات التالية المختلفة:
case (let name, let version) where (version < 0 && name.count < 0)
هذا المثال يربط قيمة تعبير switch إلى متغير مؤقت أو ثابت، لاستخدام كلمة المفتاح let في استخدامات الحروف الكبيرة والصغيرة. يُسمى هذا الترابط بالقيمة.
يمكنك أيضًا استخدام جملة where لتطبيق الشروط على هذه القيم. للعديد من الشروط، يمكنك استخدام عمليات الربط && مثل المثال السابق.
إذا لم تتوافق case مع الشروط المحددة في جملة where، فإن الأوامر في هذه الفروع لن تنفذ، ولن يمكن الوصول إليها عبر مقارنة case التالية.
case ("Swift" , ..<4 )
في هذه الحالة، سيقوم التطابق الأولي للعنصر الأول من المتنوعة مع الكتابة النصية "Swift"، وسيتحقق مما إذا كان العنصر الثاني موجودًا في نطاق المحدد ..<4.
case ("Swift" ,4...)
في هذه الحالة، سيقوم التطابق الأولي للعنصر الأول من المتنوعة مع الكتابة النصية "Swift"، وسيتحقق مما إذا كان العنصر الثاني موجودًا في نطاق المحدد 4....
case (let name, let version)
في هذه الحالة، سيقوم الترجمة البينية لكل قيمة من القيم المتنوعة إلى متغيرات مؤقتة أو متغيرات دائمة.