lambda
التعبير اللامبدا lambda
اللامبدا دالة مجهولة الاسم تُكتب بين أقواس معقوفة، وتُستخدم بكثرة كمعامل لدوال المجموعات.
التعبير اللامبدا كتلة كود قابلة للتمرير كقيمة: كمعامل لدالة، أو كقيمة لمتغيّر. إذا كانت اللامبدا تأخذ معاملًا واحدًا فقط ولم تُسمِّه، يمكن الإشارة إليه ضمنيًّا بالكلمة it. إذا كانت اللامبدا آخر معامل في استدعاء دالة، يمكن كتابتها خارج الأقواس (trailing lambda) — هذا ما يجعل map/filter/forEach تبدو وكأنها بنية لغوية مدمجة.
الصياغة
{ معامل1: نوع, معامل2: نوع -> جسم اللامبدا }
قائمة.دالة { it } // معامل واحد ضمني📄 مثال
val add = { a: Int, b: Int -> a + b }
println(add(2, 3)) // 5
val numbers = listOf(1, 2, 3, 4)
val doubled = numbers.map { it * 2 } // [2, 4, 6, 8]
fun applyOp(x: Int, op: (Int) -> Int): Int = op(x)
println(applyOp(5) { it * it }) // 25 — trailing lambdaأهم النقاط
| العنصر | الوظيفة |
|---|---|
| it | اسم ضمني للمعامل الوحيد عندما لا تُسمَّى المعاملات صراحة |
| (Int) -> Int | نوع دالة: يحدد أنواع المعاملات ونوع الإرجاع |
| trailing lambda | كتابة اللامبدا خارج الأقواس عندما تكون آخر معامل |
💡 نصائح عملية
- استخدم it للامبدا القصيرة ذات معامل واحد؛ سمِّ المعامل صراحة إن كانت اللامبدا متداخلة لتفادي الغموض
- الدوال العليا (higher-order functions) التي تأخذ لامبدا هي أساس map/filter/reduce وكل عمليات المجموعات الوظيفية
⚠️ أخطاء شائعة
- تسمية معامل صراحة ثم استخدام it بالخطأ في لامبدا متداخلة — يشير لأقرب لامبدا فقط
- كتابة لامبدا طويلة ومعقّدة بدل استخراجها كدالة عادية مسمّاة — يضرّ القراءة
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار KOTLIN الكامل بالعربي.