0Pricing
Kotlin Academy · درس

الكائنات المجهولة

تنفيذات مضمنة

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

التنفيذات المضمّنة

ينشئ الكائن المجهول مثيلًا لفئة أو واجهة من دون تسمية فئة جديدة. استخدم تعبير object.

interface Greeter { fun greet(): String }

fun main() {
    val g = object : Greeter {
        override fun greet() = "Hi"
    }
    println(g.greet())
}

تنفيذ واجهة

يمكن لتعبير الكائن تنفيذ واجهة واحدة أو عدة واجهات في الموضع الذي يحتاج إليها مباشرة.

interface Clickable { fun click() }

fun main() {
    val button = object : Clickable {
        override fun click() = println("Clicked")
    }
    button.click()
}

تجاوز أعضاء الفئة

يمكنك إنشاء فئة فرعية مجهولة لفئة مفتوحة وتجاوز أعضائها.

open class Animal { open fun sound() = "..." }

fun main() {
    val cat = object : Animal() {
        override fun sound() = "Meow"
    }
    println(cat.sound())
}

الاحتفاظ بحالة إضافية

يمكن للكائن المجهول أن يعلن خصائصه الخاصة بالإضافة إلى الأعضاء التي يتجاوزها.

fun main() {
    val point = object {
        val x = 3
        val y = 4
    }
    println("${point.x}, ${point.y}")
}

كائن من دون نوع فائق

إذا حذفت النوع الفائق، فسيكون الكائن مجرد مجموعة مرتجلة من الأعضاء، وهو ما يفيد في تجميع محلي سريع.

fun main() {
    val config = object {
        val retries = 3
        val timeout = 30
    }
    println(config.retries)
}

التقاط المتغيرات المحلية

يمكن للكائنات المجهولة التقاط المتغيرات من النطاق المحتوي، بخلاف الفئات المتداخلة الساكنة.

fun makeCounter(start: Int): () -> Int {
    var count = start
    val obj = object {
        fun next() = count++
    }
    return { obj.next() }
}

fun main() {
    val c = makeCounter(10)
    println(c())
    println(c())
}

كمستمع

من الاستخدامات الشائعة تمرير تنفيذ مضمّن بوصفه دالة رد نداء أو مستمعًا.

interface OnDone { fun done(result: Int) }

fun compute(cb: OnDone) {
    cb.done(42)
}

fun main() {
    compute(object : OnDone {
        override fun done(result: Int) = println("Got $result")
    })
}

نوع الكائن المجهول

عند إرجاعه من دالة، يكون النوع المستنتج هو النوع الفائق المُعلن، أو Any إذا لم يوجد نوع فائق. ولا تكون الأعضاء الإضافية مرئية إلا محليًا.

interface Named { val name: String }

fun make(): Named = object : Named {
    override val name = "X"
}

fun main() {
    println(make().name)
}

الكائنات المجهولة مقابل لامبدات

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

interface Handler {
    fun onStart()
    fun onStop()
}

fun main() {
    val h = object : Handler {
        override fun onStart() = println("start")
        override fun onStop() = println("stop")
    }
    h.onStart()
    h.onStop()
}

تعبير الكائن مقابل إعلان الكائن

ينشئ تعبير الكائن مثيلًا جديدًا في كل مرة. أما إعلان الكائن (object Name {}) فهو مفرد مُسمّى. يبدوان متشابهين، لكنهما يختلفان في مدة الحياة.

object Singleton { val id = 1 }

fun main() {
    val fresh = object { val id = 2 }
    println(Singleton.id)
    println(fresh.id)
}

مقارن مختصر

تكون الكائنات المجهولة مفيدة للمقارنات أو الاستراتيجيات التي تُستخدم مرة واحدة.

fun main() {
    val cmp = object : Comparator<Int> {
        override fun compare(a: Int, b: Int) = b - a
    }
    val list = listOf(1, 3, 2).sortedWith(cmp)
    println(list)
}

تحقق سريع

اختبر مدى فهمك للكائنات المجهولة.

مراجعة

لقد تعلمت عن الكائنات المجهولة:

  • ينشئ التعبير object : Type {} مثيلًا غير مُسمّى.
  • يمكنها تنفيذ الواجهات، وإنشاء فئات فرعية من الفئات المفتوحة، والاحتفاظ بالحالة.
  • تلتقط المتغيرات المحلية من النطاق المحتوي.
  • استخدمها مع دوال رد النداء متعددة الأساليب، وفضّل اللامبدات مع الأساليب المفردة.
interface Run { fun go() }

fun main() {
    val r = object : Run { override fun go() = println("go") }
    r.go()
}

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

هل درس «الكائنات المجهولة» مجاني؟

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

ماذا ستتعلم في «الكائنات المجهولة»؟

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

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

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

كم من الوقت يستغرق درس «الكائنات المجهولة»؟

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

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

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

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

  1. الفئات المتداخلة
  2. الفئات الداخلية
  3. الكائنات المجهولة
  4. الفئات المحلية
← العودة إلى Kotlin Academy