أساسيات Closures والالتقاط
افهم صياغة Closure، والمعلمات المختصرة، وTrailing Closure، وقوائم الالتقاط، والفرق بين escaping وnon-escaping.
أساسيات Closures والالتقاط درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 3 دروس في المجموع.
مقدمة
يقدّم هذا الدرس closures: وهي كتل مكتفية ذاتيًا من الشيفرة يمكنك تمريرها. استكشف الصياغة، والوسائط المختصرة، وclosure الختامي، وقوائم الالتقاط، والفرق بين escaping وnon-escaping.
صياغة closure
تشبه closures الدوال الخفيفة. الصياغة: { (params) -> Return in ... }.
let greet = { (name: String) -> String in
return "Hello, \\(name)"
}
print(greet("Ada"))الوسائط المختصرة
توفّر Swift وسائط مختصرة مثل $0 و$1 لتبسيط closures.
let doubled = [1,2,3].map { $0 * 2 }
print(doubled)closure الختامي
إذا كانت closure هي الوسيط الأخير، يمكنك كتابتها خارج القوسين: وهذا ما يُسمى closure ختاميًا.
func operate(_ x: Int, _ y: Int, _ f: (Int,Int)->Int) -> Int {
return f(x,y)
}
let sum = operate(2,3) { $0 + $1 }
print(sum)أساسيات الالتقاط
تلتقط closures القيم من النطاق المحيط بها، مثل عدّاد مستمر.
func makeCounter() -> () -> Int {
var count = 0
return {
count += 1
return count
}
}
let counter = makeCounter()
print(counter()) // 1
print(counter()) // 2قوائم الالتقاط وescaping
استخدم قوائم الالتقاط مثل [weak self] لتجنب دورات الاحتفاظ. تكون closures من النوع non-escaping افتراضيًا؛ ضع العلامة @escaping إذا خُزّنت بعد انتهاء الاستدعاء.
class Greeter {
var name = "Ada"
lazy var greet: () -> Void = { [weak self] in
print("Hello", self?.name ?? "?")
}
}
let g = Greeter()
g.greet()سؤال عن قائمة الالتقاط
تحقق سريع: ما دور قائمة الالتقاط؟
مراجعة
مراجعة: closures كتل شيفرة مضمّنة. تعلّم الصياغة والوسائط المختصرة وclosure الختامية، وتحكّم في الالتقاط باستخدام القوائم. تستمر closures من النوع escaping بعد انتهاء الاستدعاء، بينما النوع non-escaping هو الافتراضي.
تعلم Swift مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 122
- الدروس
- 409
الأسئلة الشائعة
هل درس «أساسيات Closures والالتقاط» مجاني؟
نعم — نص درس «أساسيات Closures والالتقاط» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 3 دروس في المجموع.
ماذا ستتعلم في «أساسيات Closures والالتقاط»؟
افهم صياغة Closure، والمعلمات المختصرة، وTrailing Closure، وقوائم الالتقاط، والفرق بين escaping وnon-escaping. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 3.
كم من الوقت يستغرق درس «أساسيات Closures والالتقاط»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات Closures والالتقاط
- قوائم الالتقاط — weak وunowned والتقاط القيم
- Escaping مقابل non-escaping وautoclosures