0Pricing
Kotlin Academy · درس

ما هي Lambda؟ الصياغة والأنواع

تعرّف على تعبيرات lambda، بما في ذلك الصياغة وأنواع المعاملات والقيم المُعادة.

ما هي Lambda؟ الصياغة والأنواع درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

دوال lambda في جملة واحدة

دالة lambda هي دالة مجهولة — قيمة دالة يمكنك تخزينها في متغير أو تمريرها إلى دالة أخرى أو إرجاعها.

صياغة دالة lambda الأساسية

تُكتب دالة lambda بين قوسين معقوفين: المعلمات على يسار -> والجسم على يمينه.

fun main() {
    val greet = { name: String -> "Hello, $name!" }
    println(greet("World"))
}

دالة lambda بلا معلمات

احذف المعلمات بالكامل إذا لم تكن هناك معلمات. ويكون التعبير الأخير هو قيمة الإرجاع.

fun main() {
    val random = { (1..6).random() }
    println(random()) // some number 1..6
}

دالة lambda متعددة المعلمات

افصل المعلمات بفواصل. حدّد الأنواع أو اعتمد على استنتاج النوع من السياق.

fun main() {
    val sum = { a: Int, b: Int -> a + b }
    println(sum(3, 4)) // 7
}

استنتاج أنواع دوال lambda

عند إسناد دالة lambda إلى متغير ذي نوع محدد، يمكن حذف أنواع المعلمات.

fun main() {
    val multiply: (Int, Int) -> Int = { a, b -> a * b }
    println(multiply(6, 7)) // 42
}

تعليقات أنواع دوال lambda

يصف النوع (Int, Int) -> Int دالة تستقبل قيمتي Int وتُرجع قيمة Int. هكذا تُحدّد أنواع دوال lambda.

fun main() {
    val op: (Int) -> Int = { x -> x * x }
    println(op(5)) // 25
}

دالة lambda تُرجع Unit

إذا لم تكن لدالة lambda قيمة إرجاع مفيدة، يكون نوعها () -> Unit. ويماثل Unit في Kotlin النوع void في اللغات الأخرى.

fun main() {
    val log: (String) -> Unit = { msg -> println("[LOG] $msg") }
    log("Hello")
    log("World")
}

تخزين دوال lambda في قائمة

دوال lambda قيم — يمكنك جمعها واستدعاؤها لاحقًا.

fun main() {
    val operations: List<(Int) -> Int> = listOf({ it + 1 }, { it * 2 }, { it - 3 })
    for (op in operations) println(op(10))
    // 11, 20, 7
}

إرجاع دالة lambda

يمكن للدالة إرجاع دالة lambda تلتقط بيئتها ضمن إغلاق.

fun makeAdder(n: Int): (Int) -> Int = { x -> x + n }
fun main() {
    val add5 = makeAdder(5)
    println(add5(10)) // 15
    println(add5(20)) // 25
}

دوال lambda التي تلتقط المتغيرات

يمكن لدوال lambda قراءة المتغيرات من النطاق المحيط بها وتعديلها (إذا كانت من النوع var).

fun main() {
    var counter = 0
    val increment = { counter++ }
    increment(); increment(); increment()
    println(counter) // 3
}

دوال lambda مقارنةً بالدوال المجهولة

تدعم Kotlin أيضًا الدوال المجهولة بصيغة fun(x: Int): Int = x * 2. وهي تتصرف مثل دوال lambda، لكنها تدعم أنواع الإرجاع الصريحة وreturn ذي الوسم.

fun main() {
    val square = fun(x: Int): Int { return x * x }
    println(square(8)) // 64
}

تحقق سريع

ماذا يصف النوع (Int) -> String؟

مراجعة

دالة lambda هي دالة مجهولة تُكتب بالشكل { params -> body }. ونوعها هو (ParamTypes) -> ReturnType. يمكن تخزين دوال lambda وتمريرها وإرجاعها، كما يمكنها التقاط متغيرات من نطاقها المحيط.

الأسئلة الشائعة

هل درس «ما هي Lambda؟ الصياغة والأنواع» مجاني؟

نعم — نص درس «ما هي Lambda؟ الصياغة والأنواع» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.

ماذا ستتعلم في «ما هي Lambda؟ الصياغة والأنواع»؟

تعرّف على تعبيرات lambda، بما في ذلك الصياغة وأنواع المعاملات والقيم المُعادة. تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟

لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «ما هي Lambda؟ الصياغة والأنواع»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟

نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ما هي Lambda؟ الصياغة والأنواع
  2. تمرير Lambdas إلى الدوال
  3. ‏it: المعامل الضمني
  4. ‏filter وmap وfind على المجموعات
← العودة إلى Kotlin Academy