ما هي القيم الاختيارية
جزء من قسم الأساسيات في رحلة Swift على Coddy. الدرس 11 من 86.
أحيانًا قد لا تكون للمتغير قيمة على الإطلاق. في Swift، نمثّل غياب القيمة باستخدام optionals. يشير optional إلى «توجد قيمة، وهي تساوي x» أو «لا توجد قيمة على الإطلاق».
للتصريح عن قيمة اختيارية، أضف علامة استفهام ? بعد النوع:
var nickname: String? = "Alex"
var age: Int? = nilفي المثال أعلاه، يحتوي nickname على القيمة "Alex"، بينما يحتوي age على nil: وهي طريقة Swift للتعبير عن «لا توجد قيمة». لا يمكن للمتغيرات العادية أن تكون nil، لكن يمكن للمتغيرات الاختيارية ذلك.
فكّر في optional على أنه صندوق قد يحتوي على شيء أو قد يكون فارغًا. قبل استخدام ما بداخله، تحتاج إلى التحقق مما إذا كان هناك شيء بالفعل. هذه ميزة أمان أساسية في Swift تساعد على منع الأعطال الناتجة عن القيم المفقودة غير المتوقعة.
var score: Int? = 100
print(score) // Optional(100)
score = nil
print(score) // nilلاحظ أنه عند استخدام print مع optional تحتوي على قيمة، فإنها تعرض Optional(100) بدلًا من 100 فقط. للوصول إلى القيمة الفعلية الموجودة بداخلها، تحتاج إلى إلغاء تغليف optional، وهو ما سنتناوله في الدروس القادمة.
التحدي
سهلاكتب دالة createOptional تأخذ number وتُرجع string توضّح كيف سيبدو ذلك number عند طباعته كـ optional.
مهم: تُرجع هذه الدالة String. أنت تكتب نصًا يبدو كأنه optional، ولا تُرجع قيمة optional فعلية.
عند طباعة optional يحتوي على قيمة، يعرضه Swift بالتنسيق Optional(value).
تذكير بصياغة الدوال: في Swift، تستخدم الدالة التي تُرجع قيمة سهم -> لتحديد نوع الإرجاع، وكلمة return لإرسال النتيجة. على سبيل المثال:
func myFunction(param: Int) -> String {<br> return "result"<br>}
يمكنك إنشاء string الإرجاع باستخدام string interpolation: "Optional(\(value))": يُدرج الجزء \(value) number مباشرةً داخل string.
المعاملات:
value(Int): الـ number الذي تريد تغليفه بتنسيق optional
القيمة المُرجعة: string بالتنسيق Optional(value) حيث يكون value هو number المقدَّم.
مثال: إذا كان الإدخال هو 100، فأرجع "Optional(100)"
جرّب بنفسك
func createOptional(value: Int) -> String {
// أرجع سلسلة نصية تبدو مثل optional، وليست optional حقيقية
// أدرج الرقم بين الأقواس باستخدام string interpolation
return "Optional()"
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةالإسناد المركبمراجعة - عمليات رياضية بسيطةمعاملات المقارنة7أساسيات الإدخال والإخراج
دالة الطباعةتضمين النصوصإدخال ReadLineتحويل الأنواعمراجعة - حتى 120مراجعة - True أو False10الدوال
تعريف دالةالمعاملات والوسائطقيم الإرجاعتسميات الوسائطمراجعة - دالة Sigmaمراجعة - دالة Validationالقيم الافتراضية2المتغيرات
Let مقابل Varتوصيف الأنواع (Type Annotations)الأرقامStringBooleanقواعد التسميةمراجعة - تهيئة المتغيرات5المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعامل الثلاثي (Ternary Operator)8حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على المدخلات3القيم الاختيارية (Optionals)
ما هي القيم الاختياريةفك القيم باستخدام If Letاستخدام Guard Letمعامل دمج Nilمراجعة - فك القيم بأمان9حلقات التكرار
حلقة For-Inحلقة Whileحلقة Repeat-WhileBreakContinueمراجعة - المضروب (Factorial)النطاقات في حلقات التكرارالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)تدرّب بنفسك: Playground لـ Swift