تخطَّ إلى المحتوى

🟣 شرح Kotlin

دوال النطاق (Scope Functions)

الدرس 26 من 29· ⏱ 2 دقائق قراءة· 🗓 آخر تحديث: ٢١ يوليو ٢٠٢٦

ما هي دوال النطاق؟

خمس دوال قياسية (let, run, with, apply, also) تنفّذ كتلة كود على كائن معيّن دون تكرار اسمه — تختلف في مرجع الكائن (it أو this) وفي القيمة المُرجَعة.

let — it + نتيجة الكتلة

الأشهر مع أمان null والتحويل المتسلسل:

val nick: String? = "براء"
val length = nick?.let {
    println("قيمة غير فارغة: $it")
    it.length          // القيمة المُرجَعة من let
}

also — it + الكائن نفسه

للتأثيرات الجانبية (طباعة، تسجيل) دون كسر السلسلة:

val numbers = mutableListOf(1, 2, 3)
    .also { println("القائمة الابتدائية: $it") }
    .also { it.add(4) }
println(numbers)   // [1, 2, 3, 4]

apply — this + الكائن نفسه

الأشهر لتهيئة/إعداد كائن ثم إرجاعه:

data class Config(var host: String = "", var port: Int = 0)

val config = Config().apply {
    host = "localhost"   // this.host
    port = 8080
}

run — this + نتيجة الكتلة

يجمع بين تهيئة الكائن وحساب نتيجة منه في تعبير واحد:

val message = config.run {
    "$host:$port"        // this.host و this.port
}

with — this + نتيجة الكتلة (ليست extension)

تُستدعى بتمرير الكائن كمعامل أول، لا عبر .:

val summary = with(config) {
    "الخادم يعمل على $host:$port"
}

جدول المقارنة

الدالةمرجع الكائنالقيمة المُرجَعةأفضل استخدام
letitنتيجة الكتلةأمان null وسلسلة تحويلات
alsoitالكائن نفسهتأثيرات جانبية (log/print)
applythisالكائن نفسهتهيئة/إعداد كائن
runthisنتيجة الكتلةتهيئة ثم حساب نتيجة
withthisنتيجة الكتلةتجميع عدة نداءات على كائن موجود

💡 قاعدة سريعة: إن أردت إرجاع الكائن نفسه استخدم apply/also، وإن أردت إرجاع نتيجة حساب استخدم let/run/with.

🎯 التالي: فحص الأنواع والتحويل.

شرح دوال النطاق (Scope Functions) — Kotlin بالعربي
دوال النطاق (Scope Functions)Kotlin بالعربي · The Code Fix

📚 لمزيد من التعمّق في Kotlin، راجِع التوثيق الرسمي لـ Kotlin.

هل كان هذا الدرس مفيدًا؟