Avatar ·

متى تستخدم الدوال المضمنة (inline functions) في Kotlin وكيف تؤثر على الأداء؟

مرحبًا بالجميع! لقد بدأت مؤخرًا في تعلم Kotlin وصادفت شيئًا مثل الدوال المضمنة (inline functions). في التوثيق مكتوب أنها تساعد في تجنب النفقات الإضافية لإنشاء كائنات lambda، لكنني لا أفهم تمامًا متى يجب استخدامها فعليًا. على سبيل المثال، لدي دالة بسيطة من الدرجة العليا (higher-order function): ```kotlin fun measureTime(action: () -> Unit) { val start = System.currentTimeMillis() action() val end = System.currentTimeMillis() println("Time: ${end - start} ms") } ``` أستدعيها هكذا: ```kotlin measureTime { Thread.sleep(100) println("Hello") } ``` كل شيء يعمل، لكنني قرأت أنه بدون `inline` يتم إنشاء كائن جديد لـ lambda في كل مرة. هل هذه مشكلة حقًا؟ متى يصبح هذا حرجًا؟ أيضًا، رأيت أمثلة مع `reified` (الأنواع المحققة) - يُزعم أنه يمكن استخدامها فقط مع inline. هل هذا صحيح؟ وكيف يرتبط ذلك بالأداء؟ هل يمكنكم الشرح ببساطة: في أي الحالات يجب كتابة `inline`، ومتى لا؟