يتبقى وقت أقل حتى بدء
دورة iOS Developer ، لذلك نواصل اليوم نشر مواد من سلسلة 10 أسئلة حول سلسلة Swift. الجزء الأول منها يمكن
قراءتها هنا .

شرح الأدوية الجنيسة في سويفت؟
تتيح لك الوراثة (القوالب العامة) كتابة وظائف وأنواع مرنة قابلة لإعادة الاستخدام يمكن أن تعمل مع أي نوع. يمكنك كتابة التعليمات البرمجية التي تتجنب الازدواجية وتعبر عن الغرض منها بطريقة واضحة ومجردة.
أنواع المصفوفات والقاموس في Swift عبارة عن مجموعات عامة (عامة).
في الكود أدناه ، يتم استخدام دالة عالمية لمبادلة قيمتين لسلسلة و عدد صحيح. هذا مثال على الكود القابل لإعادة الاستخدام.
func swapTwoValues<T>(_ a: inout T, _ b: inout T) { let temporaryA = a a = b b = temporaryA } var num1 = 4 var num2 = 5 var str1 = “a” var str2 = “b” swapTwoValues(&num1,&num2) swapTwoValues(&str1,&str2) print (“num1:”, num1)
ما هي الأنواع الاختيارية بسرعة ومتى يجب استخدامها؟
اختياري (اختياري ، "اختياري") في Swift هو النوع الذي قد تكون أو لا تكون فيه القيمة. تتم الإشارة إلى الخيارات عن طريق إضافة "؟" إلى أي نوع.
خيارات لاستخدام اختياري:- مقتطفات الشفرة التي قد تفشل (كنت أتوقع شيئًا ، لكن لم أستلم شيئًا).
- الكائنات الفارغة حاليًا ولكنها قد تصبح شيئًا لاحقًا (والعكس صحيح).
مثال جيد على اختياري:خاصية قد تكون موجودة أو لا تكون موجودة ، مثل الاسم الأوسط أو الزوج / الزوجة في فئة الشخص.طريقة يمكنها إرجاع قيمة أو لا شيء ، على سبيل المثال ، مطابقة في صفيف.محاولة لإرجاع نتيجة أو خطأ وإرجاع أي شيء ، على سبيل المثال ، حاول قراءة محتويات ملف (كنتيجة لإرجاع بيانات الملف عادةً) ، لكن الملف غير موجود.تفويض الخصائص التي لا يجب دائمًا تعيينها وتعيينها عادة بعد التهيئة.
مثل الروابط الضعيفة في الفصول . ما يشيرون إليه يمكن ضبطه على الصفر في أي وقت.
إذا كنت بحاجة إلى طريقة لمعرفة متى يتم تعيين القيمة (البيانات لم يتم تحميلها بعد> البيانات) بدلاً من استخدام متغير منطقي منفصل dataLoaded.
ما هو تسلسل اختياري في سويفت؟
تُعرَّف عمليات طلب واستدعاء الخصائص والمشتقات والطرق الخاصة بالاختياري ، والتي قد تكون لها قيمة "لا شيء" ، على أنها سلسلة اختيارية (سلسلة اختيارية) .إرجاع تسلسل اختياري قيمتين -
- إذا كان الخيار يحتوي على "قيمة" ، فعندما يتم استدعاء الخصائص والأساليب والمخطوطات المرتبطة بها ، يتم إرجاع القيمة
- إذا كان اختياري يحتوي على "لا شيء" ، فستعود جميع الخصائص والأساليب والمشتركات المرتبطة به
تسلسل اختياري هو بديل للتفريغ القسري.
ما هو الضغط القسري؟
التفريغ القسري هو وسيلة
لاسترداد القيمة الموجودة في اختياري. هذه العملية خطيرة لأنك تخبر المترجم بشكل أساسي: أنا متأكد من أن هذا الخيار يحتوي على قيمة حقيقية ، قم باستخراجه!
let value: Int? = 1 let newValue: Int = value!
ما هو ضمني فك؟
التفريغ الضمني : عندما نحدد خيارًا غير مفكوك ضمنيًا ، فإننا نحدد الحاوية التي ستفرض
التفريغ تلقائيًا في كل مرة نقرأها.
var name: String! = “Virat” let student = name
إذا كان الخيار الاختياري الذي تم فك حزمه لا شيء وكنت تحاول الوصول إلى قيمته المعبأة ، فستتلقى خطأ في وقت التشغيل. النتيجة هي نفسها تمامًا كما لو كنت وضعت علامة تعجب بعد العلامة الاختيارية المعتادة ، والتي لا تحتوي على قيمة.ما هو ملزم اختياري؟
يمكنك فك خيارات بطريقة "آمنة" أو "غير آمنة". طريقة آمنة هي استخدام المجلدات الاختيارية.
يتم استخدام الربط الاختياري لتحديد ما إذا كان اختياري يحتوي على قيمة ، وإذا كان الأمر كذلك ، فسوف نجعل تلك القيمة متاحة كوقت ثابت أو متغير. وبالتالي ، ليست هناك حاجة لاستخدام لاحقة! للوصول إلى قيمتها.
let possibleString: String? = "Hello" if let actualString = possibleString {
ما هو Guard
وما هي فوائده؟
بيان
guard
بسيط وقوي. يتحقق من بعض الشروط ، وإذا تم تقييمه على أنه خطأ ، يتم تنفيذ العبارة الأخرى ، والتي عادة ما تنهي الطريقة.
func addStudent(student: [String: String]) { guard let name = student["name"] else { return } print("Added \(name)!") guard let rollNo = student ["rollNo"] else { print("roll No not assigned") return } print("Assigned roll no is \(rollNo).") } addStudent(student: ["name": "Ravi"])
ميزة
guard
هو
أسرع التنفيذ . يتم تنفيذ كتلة
Guard
فقط إذا كانت الحالة خاطئة وسيتم خروج الكتلة من خلال بيان نقل السيطرة مثل
return
أو
break
أو
thrown
أو
thrown
. هذا يوفر خروج مبكر وعدد أقل من الأقواس. الخروج المبكر يعني تنفيذ أسرع.
يرجى الرجوع إلى
هذه المقالة لمزيد من المعلومات.
متى يجب استخدام guard let
، ومتى؟- استخدم
guard
عندما تريد التخلص من الإدخال غير الصحيح / غير الصحيح والتركيز على الهدف إذا كان لديك طرق بديلة للتعامل مع الإدخال. - استخدم
guard
if
حظره للحد من التعشيش والمسافة البادئة ، لأنه صغير نسبيًا.
ما هو defer
؟
defer
استخدام
defer
التأجيل لتنفيذ مجموعة من العبارات قبل أن يترك تنفيذ التعليمات البرمجية الكتلة الحالية.
سيتم تنفيذ
defer
داخل كتلة
if
أولاً. يتبع ذلك نمط LIFO لتنفيذ عبارات
defer
المتبقية.
func doSomething() { defer { print(“1”)} defer { print(“2”)} defer { print(“3”)} if 1<2 { defer { print("1<2")} } defer { print(“4”)} defer { print(“5”)} defer { print(“6”)} } 1<2 6 5 4 3 2 1
قائمة بالتحكم في نقل مشغلي التي تستخدم في سويفت؟
break
- بيان
break
ينهي تنفيذ بيان تدفق التحكم بالكامل على الفور.
continue
- يخبر بيان المتابعة الحلقة أن توقف ما تفعله وأن تبدأ من جديد في بداية التكرار التالي للحلقة.
return
- إرجاع القيم من الوظائف.
throw
- بحاجة إلى إعادة توجيه خطأ باستخدام وظائف الرمي
fallthrough
-
fallthrough
استخدام بيان
fallthrough
في كتلة حالة التبديل لتنفيذ بيان الحالة ، والذي يقع بجانب عبارات الحالة المقابلة بناءً على متطلبات المستخدم.
بشكل
swift
fallthrough
استخدام مشغل
fallthrough
لتنفيذ الحالة التالية ، حتى لو لم يكن مطابقًا للحالة الأصلية.
let integerToDescribe = 5 var description = “The number \(integerToDescribe) is” switch integerToDescribe { case 2, 3, 5, 7, 11, 13, 17, 19: description += “ a prime number, and also” fallthrough case 10: description += “ case 10.” default: description += “ an integer.” } print(description)
نهاية الجزء الثاني. الجزء الأول يمكن
قراءته هنا .
نحن في انتظار تعليقاتكم ونذكر أنه في غضون ساعات قليلة ، سيكون هناك
يوم مفتوح ، في إطاره سنتحدث بالتفصيل عن مسارنا.