0Pricing
Kotlin Academy · درس

الدوال Infix

استدعاءات دوال سهلة القراءة

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

ما الدالة Infix؟

يمكن استدعاء دالة infix من دون النقطة أو الأقواس: a func b. علّموها بالكلمة المفتاحية infix.

infix fun Int.times2(factor: Int) = this * factor

fun main() {
    println(3 times2 4)
}

قواعد Infix

يجب أن تكون دالة infix دالة عضو أو دالة امتداد، وأن تأخذ معاملًا واحدًا بالضبط، وألا يكون هذا المعامل من نوع vararg أو ذا قيمة افتراضية.

infix fun Int.plusBy(other: Int) = this + other

fun main() {
    println(5 plusBy 7)
}

دوال Infix المضمّنة

تُعدّ دوال قياسية كثيرة دوال infix، منها to (التي تنشئ Pair)، وand، وor، وshl، وuntil، وdownTo، وstep للنطاقات.

fun main() {
    val pair = "key" to 42
    println(pair)
    for (i in 1 until 4) print(i)
}

إنشاء Pair باستخدام to

إن صيغة الخرائط المألوفة "a" to 1 ليست سوى دالة infix المسماة to، وهي تعيد Pair.

fun main() {
    val map = mapOf(1 to "one", 2 to "two")
    println(map[2])
}

Infix بوصفها دالة عضو

يمكن أن تكون دوال infix دوال أعضاء، مما يتيح كتابة تعبيرات مجال متسلسلة وسلسة.

class Money(val cents: Int) {
    infix fun add(o: Money) = Money(cents + o.cents)
}

fun main() {
    val total = Money(100) add Money(50)
    println(total.cents)
}

قابلية القراءة أولًا

تتألق infix عندما يُقرأ الاستدعاء كأنه جملة. اختاروا أسماء تشبه الأفعال، بحيث تنساب الصيغة a name b طبيعيًا.

infix fun String.repeatedTimes(n: Int) = this.repeat(n)

fun main() {
    println("ab" repeatedTimes 3)
}

أسبقية استدعاءات Infix

تكون لاستدعاءات infix أسبقية أقل من العمليات الحسابية وأعلى من المقارنات. أضيفوا الأقواس عند المزج بينها للحفاظ على الوضوح.

infix fun Int.combine(o: Int) = this * 10 + o

fun main() {
    println(1 combine 2 + 3)
}

المستقبل this

في امتداد infix، يكون this هو المعامل الأيسر، ويكون المعامل هو المعامل الأيمن.

infix fun Int.minus2(o: Int) = this - o

fun main() {
    println(10 minus2 3)
}

تسلسل استدعاءات Infix

تُقيَّم استدعاءات infix من اليسار إلى اليمين، ولذلك يمكنكم تسلسلها.

infix fun Int.then(o: Int) = this + o

fun main() {
    println(1 then 2 then 3)
}

تجنبوا الإفراط في استخدام Infix

تزيل infix النقاط والأقواس، مما قد يضر بالوضوح في العمليات غير البديهية. استخدموها فقط عندما تجعل القراءة أفضل.

infix fun Int.power(exp: Int): Int {
    var r = 1
    repeat(exp) { r *= this }
    return r
}

fun main() {
    println(2 power 5)
}

مثال سلس

يمكن لـ infix أن تجعل التأكيدات أو أدوات البناء تُقرأ تقريبًا كأنها مكتوبة بالإنجليزية.

infix fun String.shouldStartWith(prefix: String) =
    this.startsWith(prefix)

fun main() {
    println("kotlin" shouldStartWith "kot")
}

تحقق سريع

اختبروا مدى فهمكم لدوال infix.

مراجعة

لقد تعلمتم دوال infix:

  • علّموها بـ infix واستدعُوها بصيغة a func b.
  • يجب أن تكون دالة عضو أو امتداد، وأن تحتوي على معامل واحد ليس من نوع vararg ولا ذا قيمة افتراضية.
  • تُعدّ to وuntil وdownTo دوال infix مضمّنة.
  • استخدموها حيث تحسن قابلية القراءة فعلًا.
infix fun Int.add(o: Int) = this + o

fun main() {
    println(4 add 6)
}

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

هل درس «الدوال Infix» مجاني؟

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

ماذا ستتعلم في «الدوال Infix»؟

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

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

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

كم من الوقت يستغرق درس «الدوال Infix»؟

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

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

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

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

  1. الدوال Infix
  2. بناء واجهات API شبيهة بـ DSL
  3. دوال tailrec
  4. متى تستخدمون كل واحدة
← العودة إلى Kotlin Academy