Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

أساسيات Closures

جزء من قسم المنطق والتدفق في رحلة Swift على Coddy — الدرس 38 من 56.

الإغلاق (closure) هو كتلة برمجية قائمة بذاتها يمكنك تمريرها واستدعاؤها لاحقاً. توضح الصيغة الكاملة أنواع المعاملات والقيم المرجعة:

let double = { (n: Int) -> Int in
    return n * 2
}
print(double(5))                  // 10

يمكن لـ Swift استنتاج الأنواع عندما يكون السياق واضحاً، لذا نادراً ما تكتب الصيغة الطويلة. داخل map و filter وما إلى ذلك، فإن الاختصار الأقصر هو المعتاد:

let nums = [1, 2, 3, 4]
let doubled = nums.map { n in n * 2 }
let alsoDoubled = nums.map { $0 * 2 }    // الأقصر، $0 هو الوسيط الأول

الإغلاقات (Closures) هي قيم، يمكنك تخزينها في متغيرات، وإرجاعها من الدوال، وتمريرها كوسطاء. هذا هو السبب الكامل وراء عمل map.

challenge icon

التحدي

سهل

اقرأ سطرين من المدخلات:

  1. عدد صحيح x
  2. قائمة من الأعداد الصحيحة مفصولة بفاصلة

قم بتعريف ثلاثة closures، كل منها بنوع (Int) -> Int:

  • addX يضيف x إلى المعامل الخاص به
  • square يعيد مربع المعامل
  • negate يعيد المعامل مع تغيير إشارته (سالب المعامل)

قم بتطبيق كل closure على كل عنصر في القائمة باستخدام map. اطبع ثلاثة أسطر، سطر لكل closure، مع دمج النتائج بواسطة ,:

addX: ...
square: ...
negate: ...

للمدخلات 10 في السطر الأول و 1,2,3 في السطر الثاني، يكون المخرج هو:

addX: 11,12,13
square: 1,4,9
negate: -1,-2,-3

ورقة مرجعية

الـ closure (الإغلاق) هو كتلة برمجية ذاتية الاحتواء يمكن تخزينها وتمريرها. الصيغة الكاملة:

let double = { (n: Int) -> Int in
    return n * 2
}

يمكن تخزين الإغلاقات (Closures) في متغيرات وتمريرها كوسائط (على سبيل المثال إلى map). تستنتج لغة Swift الأنواع بناءً على السياق، مما يسمح بالاختصار:

let nums = [1, 2, 3, 4]
let doubled = nums.map { n in n * 2 }
let alsoDoubled = nums.map { $0 * 2 }  // $0 هو الوسيط الأول

جرّب بنفسك

let x = Int(readLine()!)!
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }

// TODO: قم بتعريف ثلاث إغلاقات (closures) من نوع (Int) -> Int وقم بتمرير nums عبر كل منها
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق والتدفق