الدوال وLambdas
عرّف الدوال باستخدام المعلمات وأنواع الإرجاع، واستخدم الوسائط الافتراضية والمسمّاة، واكتب تعبيرات lambda موجزة.
الدوال وLambdas درس مجاني في Android Academy على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Android Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Android Academy 3 دروس في المجموع.
لماذا نستخدم الدوال؟
تتيح لكم الدوال كتابة كتلة من التعليمات البرمجية مرة واحدة وإعادة استخدامها في أي مكان.
- تقليل التكرار
- جعل التعليمات البرمجية أسهل قراءةً واختبارًا
- تقسيم المشكلات الكبيرة إلى أجزاء أصغر
في Kotlin، تُعدّ الدوال عناصر من الدرجة الأولى — يمكنكم تخزينها في متغيّرات وتمريرها إلى أماكن أخرى.
صياغة الدوال الأساسية
تستخدم دالة Kotlin الكلمة المفتاحية fun:
fun greet(name: String): String {
return "Hello, $name!"
}
fun main() {
val msg = greet("Alice")
println(msg) // Hello, Alice!
println(greet("Bob")) // Hello, Bob!
}الدوال ذات التعبير الواحد
عندما يتكوّن جسم الدالة من تعبير واحد، يمكنكم استخدام = والاستغناء عن الأقواس المعقوفة وreturn:
fun square(n: Int): Int = n * n
fun add(a: Int, b: Int) = a + b // type inferred
fun main() {
println(square(5)) // 25
println(add(3, 7)) // 10
}المعاملات الافتراضية والمُسمّاة
تدعم دوال Kotlin القيم الافتراضية للمعاملات — ولا حاجة إلى الدوال البديلة:
- افتراضية:
fun greet(name: String = "World") - مُسمّاة: استدعوا الدالة باستخدام
greet(name = "Alice")لتجاوز الترتيب الموضعي
الافتراضية والمُسمّاة أثناء العمل
تحافظ المعاملات الافتراضية على نظافة واجهة API الخاصة بكم:
fun buildProfile(
name: String,
age: Int = 0,
role: String = "User"
): String {
return "$name | age=$age | $role"
}
fun main() {
println(buildProfile("Alice"))
println(buildProfile("Bob", age = 30))
println(buildProfile("Carol", 25, "Admin"))
}ما هي lambdas؟
إن lambda دالة مجهولة — أي دالة بلا اسم.
- الصياغة:
{ params -> body } - تُخزّن في متغيّر:
val double = { x: Int -> x * 2 } - تُمرّر إلى دالة أخرى كمعامل
توجد lambdas في كل مكان في Android: في مستمعات النقر، وتحويلات القوائم، وcoroutines.
أمثلة على Lambda
خزّنوا lambdas واستدعُوها مثل الدوال العادية تمامًا:
fun main() {
val double = { x: Int -> x * 2 }
println(double(4)) // 8
val add = { a: Int, b: Int -> a + b }
println(add(3, 5)) // 8
// Lambda with no params
val sayHi = { println("Hi!") }
sayHi() // Hi!
}الدوال عالية الرتبة
تأخذ الدالة عالية الرتبة دالةً أخرى كمعامل أو تُعيد دالة.
تمتلئ المكتبة القياسية في Kotlin بالدوال عالية الرتبة، مثل: filter وmap وforEach.
صياغة lambda اللاحقة: عندما يكون المعامل الأخير lambda، انقلوها إلى خارج الأقواس.
صياغة Lambda اللاحقة
مرّروا lambda باعتبارها المعامل الأخير خارج الأقواس:
fun applyTwice(n: Int, operation: (Int) -> Int): Int {
return operation(operation(n))
}
fun main() {
val result = applyTwice(3) { x -> x * 2 }
println(result) // 12 (3 * 2 = 6, 6 * 2 = 12)
// 'it' is the implicit single parameter
val doubled = applyTwice(5) { it + it }
println(doubled) // 20
}اختبار سريع
انظروا إلى هذه التعليمات البرمجية. ماذا ستطبع؟
val triple = { x: Int -> x * 3 }
println(triple(4))
مراجعة: الدوال وLambdas
لقد تعلّمتم ما يلي:
- تعرّف
funدالةً بمعاملات ونوع إرجاع - تستخدم الدوال ذات التعبير الواحد الصياغة المختصرة
= - تحلّ المعاملات الافتراضية والمُسمّاة محل الدوال البديلة
- Lambdas هي دوال مجهولة:
{ params -> body } - تقبل الدوال عالية الرتبة دوالً كمعاملات
التالي: التحكّم في تدفق البرنامج باستخدام الشروط والحلقات.
الأسئلة الشائعة
هل درس «الدوال وLambdas» مجاني؟
نعم — نص درس «الدوال وLambdas» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Android Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Android Academy 3 دروس في المجموع.
ماذا ستتعلم في «الدوال وLambdas»؟
عرّف الدوال باستخدام المعلمات وأنواع الإرجاع، واستخدم الوسائط الافتراضية والمسمّاة، واكتب تعبيرات lambda موجزة. تتمرن على Android Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Android Academy؟
لا تُشترط خبرة سابقة. Android Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.
كم من الوقت يستغرق درس «الدوال وLambdas»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Android Academy هذا؟
نعم. كل درس في Android Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- المتغيرات وأنواع البيانات
- الدوال وLambdas
- تدفّق التحكم