JavaScript is not enabled!...Please enable javascript in your browser

جافا سكريبت غير ممكن! ... الرجاء تفعيل الجافا سكريبت في متصفحك.

الصفحة الرئيسية

دوال Inline في Kotlin بالامثلة


 
في هذا الدرس سوف نناقش دالة Inline في Kotlin باستخدام الكلمة المحجوزة Inline . تساعدنا دوال Inline على توفير الذاكرة في وقت التشغيل وبالتالي زيادة أداء تطبيقنا.

ناقشنا في الدروس السابقة تعبيرات lambda ودوال higher-order. لنأخذ نفس المثال السابق:


fun higherOrderFunction(functionName: (name: String)->Unit, name: String){
    println("In higher order function")
    println("Calling received function...")
    functionName(name)
}
fun main() {
    higherOrderFunction({ name: String ->
        println("Inside the lambda function")
        println("Say hello to $name")
    }, "Ninja")
}

في IntelliJ ، يمكننا إنشاء الرمز الثانوي لبرنامج Kotlin الخاص بنا. لذلك اذهب إلى Tools> Kotlin> Show Kotlin Bytecode. يمكننا فك هذا الرمز الثانوي وإنشاء كود Java المكافئ.

سنلاحظ أنه بالنسبة لتعبير lambda ، يتم إنشاء كائن دالة جديد. لكن هذا ليس ما أردناه.

كل دالة ذات higher-order ستنشئ كائنًا جديدًا وتخصص ذاكرة له. وهذا سوف يسبب في زيادة وقت التشغيل. للتغلب على هذه المشكلة ، نستخدم الدوال Inline .

دالة Inline كوتلين 

لتجنب إنشاء كائن جديد لكل دالة ذات higher-order  ، يمكننا استخدام الكلمات الأساسية Inline . سوف يساعدنا هذا على زيادة أداء الكود. الكلمة المحجوزة  Inline، بدلاً من ان تنشاء كائن جديد للدالة ذات higher-order ، تقوم بنسخ الكود الموجود داخل دالة  Inline  إلى المكان الذي يتم استدعاؤها.

تتم إضافة الكلمة المحجوزة Inline  قبل اسم الدالة

inline fun higherOrderFunction(functionName: (name: String)->Unit, name: String){
    println("In higher order function")
    println("Calling received function...")
    functionName(name)
}

fun main() {
    higherOrderFunction({ name: String ->
        println("Inside lambda function")
        println("Say hello to $name")
    }, "Ninja")
}

إذا أضفنا الكلمة المفتاحية Inline قبل دالة عادية ، فلن يؤدي ذلك إلى أي تغيير في الأداء. حتى Intellij سيقترح إزالته.

ضع في اعتبارك أنه يجب استخدام الكلمة الأساسية Inline فقط عندما تكون دالة higher-order قصيرة. إذا كانت دالة higher-order تحتوي على الكثير من التعليمات البرمجية ، فسيكون الرمز الذي تم إنشاؤه طويلاً حقًا.

الخلاصة

ناقشنا في هذاالدرس دوال الـ Inline . يصعب فهمها قليلاً في البداية. النقطة الوحيدة لإضافة كلمة  Inline  هي تحسين الأداء.
الاسمبريد إلكترونيرسالة