دوال الـ Higher order او دوال higher level : هي دوال يمكن ان تمتلك دوال اخرى كمعامل (parameter) او يمكنها ان تعيد دالة او يمكنها القيام بكليهما
لقد عرفنا حتى الان كيف نقوم بتمرير عدد صحيح او سلسلة نصية كمعاملات (parameters) الى الدوال لكن في هذا الدرس سوف نتعلم كيفية تمرير دالة الى دالة اخرى . ايضا كيف ترجع الدالة دالة اخرى.
مثال دالة كوتلين Higher order : تمرير دالة الى دالة اخرى
في المثال التالي سوف نقوم بتمرير دالة demo()الى دالة func() ولتمرير دالة كمعامل (parameter) الى دالة اخرى نستخدم الرمز:: قبل الدالة كما هو موضح في المثال التالي.
fun main(args: Arrayالمخرجات) { func("BeginnersBook", ::demo) } fun func(str: String, myfunc: (String) -> Unit) { print("Welcome to Kotlin tutorial at ") myfunc(str) } fun demo(str: String) { println(str) }
مثال دالة كوتلين Higher order : دالة ترجع دالة اخرى.
في المثال التالي تقوم الدالة func بإرجاع دالة اخرى.ولفهم هذا البرنامج ، دعنا نلقي نظرة على الدالة func اولا ، فهي تقبل عدد صحيح من المعاملات (parameters) وفي منطقة الارجاع قمنا بتعريف دالة
(Int) -> Int = {num2 -> num2 + num}
لذالك فهذه الدالة التي تقبل معامل(parameter) عدد صحيح تعيد مجموع هذه المعاملات .(parameters).قد تتساءل عن سبب تمريرنا للقيمة 20 كمعامل في المجموع ، هذا لان الدالة func اعادات الدالة وبالتابي فإن المجموع هو الدالة التي ستستقبل المعامل int. هذه هي نفس الوظيفة التي حددناها في منطة ارجاع الدالة func .
fun main(args: Arrayالمخرجات) { val sum = func(10) println("10 + 20: ${sum(20)}") } fun func(num: Int): (Int) -> Int = {num2 -> num2 + num}