كيفية تمرير دالة كمعامل لدالة أخرى في Kotlin؟
مرحبًا! بدأت للتو في تعلم Kotlin بعد Java وواجهت مشكلة.
في Java، كنت معتادًا على استخدام الواجهات أو الواجهات الوظيفية (مثل `Consumer`، `Runnable`) لتمرير السلوك إلى الدوال. في Kotlin، كما فهمت، الدوال هي كائنات من الدرجة الأولى ويمكن تمريرها مباشرة.
لكني لا أستطيع كتابة الصيغة الصحيحة. لنفترض أن لدي قائمة أرقام بسيطة، وأريد كتابة دالة `processNumbers` التي تأخذ قائمة ودالة معالجة لكل عنصر.
هذا ما أحاول فعله:
```kotlin
fun processNumbers(numbers: List, operation: ???) {
for (number in numbers) {
operation(number)
}
}
fun main() {
val numbers = listOf(1, 2, 3, 4, 5)
// أريد تمرير دالة هنا تطبع مربع الرقم
processNumbers(numbers, println(it * it)) // خطأ!
}
```
لا أفهم أي نوع يجب تحديده للمعامل `operation`. جربت كتابة `(Int) -> Unit` لكني أحصل على خطأ.