ما هي القيم الاختيارية
جزء من قسم الأساسيات في رحلة Swift على Coddy — الدرس 11 من 86.
أحياناً قد لا يمتلك المتغير قيمة على الإطلاق. في لغة Swift، نمثل غياب القيمة باستخدام optionals. يقول الـ optional "هناك قيمة، وهي تساوي x" أو "لا توجد قيمة على الإطلاق".
للإعلان عن اختيار (optional)، أضف علامة استفهام ? بعد النوع:
var nickname: String? = "Alex"
var age: Int? = nilفي المثال أعلاه، يحتوي nickname على القيمة "Alex"، بينما يحتوي age على nil — وهي طريقة Swift لقول "لا توجد قيمة". لا يمكن أن تكون المتغيرات العادية nil، ولكن يمكن للمتغيرات الاختيارية (optionals) ذلك.
فكر في الـ optional كصندوق قد يحتوي على شيء ما أو قد يكون فارغاً. قبل استخدام ما بداخله، تحتاج إلى التحقق مما إذا كان هناك شيء بالفعل. هذه ميزة أمان رئيسية في Swift تساعد في منع الانهيارات (crashes) الناتجة عن القيم المفقودة غير المتوقعة.
var score: Int? = 100
print(score) // Optional(100)
score = nil
print(score) // nilلاحظ أنه عندما تقوم بطباعة اختياري (optional) بقيمة، فإنه يظهر Optional(100) بدلاً من مجرد 100. للوصول إلى القيمة الفعلية بالداخل، تحتاج إلى فك تغليف (unwrap) الاختياري — وهو ما سنغطيه في الدروس القادمة.
التحدي
سهلاكتب دالة createOptional تأخذ رقماً وتُرجع سلسلة نصية توضح كيف سيبدو هذا الرقم عند طباعته كـ optional.
عندما تقوم بطباعة optional يحتوي على قيمة، فإن Swift يعرضه بالتنسيق Optional(value).
تذكير بصيغة الدالة: في Swift، تستخدم الدالة التي تُرجع قيمة السهم -> لتحديد نوع الإرجاع، والكلمة المفتاحية return لإرسال النتيجة. على سبيل المثال:
func myFunction(param: Int) -> String {<br> return "result"<br>}
يمكنك بناء سلسلة الإرجاع النصية باستخدام إدراج السلسلة (string interpolation): "Optional(\(value))" — الجزء \(value) يقوم بإدراج الرقم مباشرة داخل السلسلة النصية.
المعاملات (Parameters):
value(Int): الرقم المراد تغليفه بتنسيق optional
تُرجع: سلسلة نصية بتنسيق Optional(value) حيث value هو الرقم المقدم.
مثال: إذا كان المدخل 100، فسيتم إرجاع "Optional(100)"
ورقة مرجعية
في لغة Swift، تمثل القيم الاختيارية (optionals) وجود القيمة أو غيابها. يمكن أن تحتوي القيمة الاختيارية إما على قيمة أو تكون nil.
للتصريح عن قيمة اختيارية، أضف علامة استفهام ? بعد النوع:
var nickname: String? = "Alex"
var age: Int? = nilلا يمكن للمتغيرات العادية أن تكون nil، ولكن يمكن للقيم الاختيارية ذلك. استخدم nil لتمثيل "عدم وجود قيمة":
var score: Int? = 100
score = nilعند طباعة قيمة اختيارية تحتوي على قيمة، تعرضها Swift كـ Optional(value):
var score: Int? = 100
print(score) // Optional(100)
score = nil
print(score) // nilجرّب بنفسك
func createOptional(value: Int) -> String {
// اكتب الكود هنا
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
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)