let وrun: التحويل وتحديد النطاق
استخدم let للتحويلات الآمنة مع null وrun للحسابات المحلية.
let وrun: التحويل وتحديد النطاق درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
let و run
تستخدم let القيمة it بوصفها المستقبِل، بينما تستخدم run القيمة this. تعيد كلتاهما آخر تعبير في اللامبدا. اختر بينهما بناءً على ما إذا كنت تفضّل المراجع الصريحة.
أساسيات let
تمرّر let المستقبِل إلى اللامبدا بوصفه it. وتفيد في تحويل قيمة أو حصر نطاق متغيّر.
fun main() {
val length = "Kotlin".let { it.length }
println(length) // 6
}let مع القيم القابلة لـ null
النمط الشائع: تنفّذ obj?.let { ... } الكتلة فقط عندما تكون قيمة obj غير مساوية لـ null.
fun main() {
val name: String? = "Ada"
val upper = name?.let { it.uppercase() } ?: "(unknown)"
println(upper) // ADA
}استخدام let للتحويل
استخدم let لتحويل قيمة مع الحفاظ على سهولة قراءة السلسلة.
fun main() {
val numStr = "42"
val doubled = numStr.let { it.toInt() }.let { it * 2 }
println(doubled) // 84
}استخدام let لحصر النطاق
احصر إمكانية رؤية متغيّر في كتلة صغيرة — وهي طريقة نظيفة لتجنّب تلويث مساحة الأسماء.
fun main() {
val username = readUserConfig().let { config ->
config.uppercase()
}
println(username)
}
fun readUserConfig() = "ada"أساسيات run
تعمل run مثل let، لكنها تستخدم this بدلًا من it. وتفيد عندما تريد استدعاء عدة أعضاء للمستقبِل.
class Rect(val w: Int, val h: Int) {
fun area() = w * h
fun perimeter() = 2 * (w + h)
}
fun main() {
val description = Rect(3, 4).run {
"area=${area()}, perimeter=${perimeter()}"
}
println(description)
}استخدام run ككتلة مستقلة
تنفّذ run { ... } (من دون مستقبِل) الكتلة وتعيد نتيجتها — وهذا مفيد لتجميع العمليات الحسابية.
fun main() {
val result = run {
val a = 10
val b = 20
a + b
}
println(result) // 30
}let و run وفق أسلوب المستقبِل
إذا كان جسم اللامبدا يصل إلى عدة أعضاء في المستقبِل، فإن run تتجنّب السابقة it.. أما إذا استخدم المستقبِل مرة أو مرتين فقط، فستكون قراءة let واضحة.
class User(val name: String, val email: String, val age: Int)
fun main() {
val user = User("Ada", "ada@x.io", 35)
// run: this-style
val s1 = user.run { "$name <$email> age $age" }
// let: it-style
val s2 = user.let { "${it.name} <${it.email}> age ${it.age}" }
println(s1); println(s2)
}دمج let و Elvis
يُعد الجمع بين ?.let { ... } و?: نمطًا قويًا لإنشاء مسار آمن تجاه null.
fun main() {
val raw: String? = " hello "
val cleaned = raw?.let { it.trim().uppercase() } ?: "(empty)"
println(cleaned) // HELLO
}run للتهيئة وإرجاع نتيجة
اجمع بين الإعداد (عبر this) وقيمة مُعادة في كتلة واحدة.
class Connection {
var host: String = ""
fun connect() = "connected to $host"
}
fun main() {
val status = Connection().run {
host = "localhost"
connect()
}
println(status)
}نمط مضاد: الإفراط في استخدام let
لا تُغلّف عمليات التحقق البسيطة من null باستخدام let عندما يكون if أوضح. استخدم دوال النطاق عندما تكون مفيدة فعلًا.
fun main() {
val name: String? = "Ada"
// OK
name?.let { println(it.length) }
// Equivalent and clearer for trivial cases:
if (name != null) println(name.length)
}اختبار سريع
أي دالة نطاق تمرّر المستقبِل إلى اللامبدا بوصفه it، وتعيد أيضًا نتيجة اللامبدا؟
مراجعة
تستخدم let القيمة it وتعيد نتيجة اللامبدا — ولذلك فهي ممتازة للتحويلات الآمنة تجاه null ولحصر النطاق. تستخدم run القيمة this وتعيد نتيجة اللامبدا — ولذلك فهي ممتازة عند استدعاء عدة أعضاء للمستقبِل. وكلتاهما مناسبتان للكود القائم على التعبيرات.
تعلم Kotlin مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 51
- الدروس
- 203
الأسئلة الشائعة
هل درس «let وrun: التحويل وتحديد النطاق» مجاني؟
نعم — نص درس «let وrun: التحويل وتحديد النطاق» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
ماذا ستتعلم في «let وrun: التحويل وتحديد النطاق»؟
استخدم let للتحويلات الآمنة مع null وrun للحسابات المحلية. تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟
لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «let وrun: التحويل وتحديد النطاق»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟
نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- apply وwith: التهيئة والإرجاع
- let وrun: التحويل وتحديد النطاق
- also: التأثيرات الجانبية من دون تغيير المستقبل
- اختيار دالة النطاق المناسبة: دليل اتخاذ القرار