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