guard let للخروج المبكر
أزل الغلاف واخرج مبكرًا عند الفشل لتقليل التداخل.
guard let للخروج المبكر درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.
فكرة guard
يتحقق guard من شرط، وإذا فشل يخرج من النطاق الحالي. وهو مصمم للخروج المبكر بحيث يبقى المسار المعتاد من دون مسافات بادئة إضافية.
func greet(_ name: String?) {
guard let name else {
print("No name")
return
}
print("Hello, \(name)")
}
greet("Ada")
greet(nil)صيغة guard let
اكتب guard let value = optional else { return }. وبخلاف if let، تبقى القيمة بعد فك تغليفها ضمن النطاق بعد تعليمة guard.
func double(_ text: String) {
guard let n = Int(text) else {
print("Not a number")
return
}
print(n * 2)
}
double("8")
double("x")تبقى القيمة متاحة
بما أن guard يخرج عند الفشل، يعرف المترجم أن القيمة موجودة بعده. ويمكنك استخدامها بشكل عادي في بقية الدالة.
func length(of text: String?) {
guard let text else { return }
let count = text.count
print(count)
}
length("hello")يجب أن تُنهي else التنفيذ
يجب أن يغادر الجزء else من guard النطاق الحالي: باستخدام return أو break أو continue أو throw. ويفرض المصرّف ذلك.
func process(_ value: Int?) {
guard let value else {
return
}
print("Processing \(value)")
}
process(99)الصيغة المختصرة لـ guard let
مثل if let، يدعم guard الصيغة المختصرة: guard let name else { ... } عندما تتطابق الأسماء.
func show(_ name: String?) {
guard let name else {
print("missing")
return
}
print(name)
}
show("Kai")مسار نجاح مسطّح
الفائدة الكبرى من guard هي الحصول على مسار نجاح مسطّح وسهل القراءة. قارن بين أهرامات if let المتداخلة وسلسلة من عبارات guard.
func register(name: String?, age: Int?) {
guard let name else { return }
guard let age else { return }
print("\(name) is \(age)")
}
register(name: "Mia", age: 28)حماية الشروط العادية
يعمل guard مع أي شرط من نوع Bool، وليس مع القيم الاختيارية فقط. تؤدي العبارة guard count > 0 else { return } إلى الخروج مبكرًا.
func divide(_ a: Int, by b: Int) {
guard b != 0 else {
print("Cannot divide by zero")
return
}
print(a / b)
}
divide(10, by: 2)
divide(10, by: 0)guard داخل الحلقات
يمكن لـ guard داخل الحلقة استخدام continue لتخطي دورة عندما تكون البيانات مفقودة.
let inputs = ["1", "x", "3"]
for item in inputs {
guard let n = Int(item) else { continue }
print(n * 10)
}عمليات ربط متعددة في guard واحد
يمكن لعبارة guard واحدة فك تغليف عدة قيم اختيارية، مع فصلها بفواصل. يجب أن تنجح جميعها للمتابعة.
func combine(_ a: String?, _ b: String?) {
guard let a, let b else { return }
print(a + b)
}
combine("foo", "bar")فحوص شبيهة بـ where مع guard
يمكنك إضافة شروط منطقية بعد عملية الربط، مع فصلها بفاصلة، لتحديد الحالات التي ينجح فيها guard بدقة أكبر.
func validate(_ text: String?) {
guard let text, !text.isEmpty else {
print("invalid")
return
}
print("ok: \(text)")
}
validate("")
validate("hi")متى تختار guard
استخدم guard للتحقق من الشروط المسبقة في بداية الدالة، واستخدم if let عندما تحتاج إلى القيمة لفترة وجيزة داخل فرع.
func area(width: Int?, height: Int?) -> Int {
guard let width, let height else { return 0 }
return width * height
}
print(area(width: 3, height: 4))تحقق سريع
اختبر guard let.
خلاصة: استخدام guard let للخروج المبكر
تفك العبارة guard let value else { return } تغليف قيمة اختيارية، وتُبقي القيمة ضمن النطاق بعد ذلك. ويجب أن يؤدي جزء else فيها إلى الخروج، مما يحافظ على مسار نجاح مسطّح وسهل القراءة.
func f(_ x: Int?) {
guard let x else { return }
print(x)
}
f(5)الأسئلة الشائعة
هل درس «guard let للخروج المبكر» مجاني؟
نعم — نص درس «guard let للخروج المبكر» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.
ماذا ستتعلم في «guard let للخروج المبكر»؟
أزل الغلاف واخرج مبكرًا عند الفشل لتقليل التداخل. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «guard let للخروج المبكر»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- if let والربط المختصر
- guard let للخروج المبكر
- ربط عدة قيم اختيارية
- النمط الاختياري في switch و for