تكرار السؤال: …
الإجابة المختصرة
هي دالة تأخذ دالة أخرى كمعامل أو تعيد دالة كنتيجة.
الشرح
تتعامل Kotlin مع الدوال كـ First-Class Citizens، مما يسمح بتخزين الدوال في متغيرات وتمريرها وإرجاعها باستخدام Function Types مثل (T) -> R. عندما تكون اللامدا هي المعامل الأخير للدالة، يمكن كتابتها خارج قوسي استدعاء الدالة (Trailing Lambda Syntax).
مثال بالكود
fun filterTransactions(
transactions: List<Double>,
predicate: (Double) -> Boolean
): List<Double> {
val result = mutableListOf<Double>()
for (t in transactions) {
if (predicate(t)) result.add(t)
}
return result
}
// Trailing lambda
val highValue = filterTransactions(transactions) { it > 1000.0 }أخطاء شائعة
- تجاهل تكلفة إنشاء كائنات Function في الذاكرة الحلقية عند تكرار استدعاء اللامدا دون استخدام inline.