it: المعامل الضمني
استخدم المعامل الضمني 'it' في lambdas ذات المعامل الواحد.
it: المعامل الضمني درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
المعلمة الضمنية it
عندما تحتوي lambda على معلمة واحدة بالضبط، يمكنكم حذف التصريح عنها والإشارة إليها باستخدام it. وهذا يقلل الكتابة في مسارات المعالجة القصيرة.
استخدام it مع forEach
المثال الكلاسيكي: تمرر forEach كل عنصر باعتباره it.
fun main() {
listOf(1, 2, 3).forEach { println(it) }
}استخدام it مع map
حوّلوا كل عنصر باستخدام it كمدخل.
fun main() {
val doubled = listOf(1, 2, 3).map { it * 2 }
println(doubled) // [2, 4, 6]
}استخدام it مع filter
تُبقي filter على العناصر التي تُرجع lambda لها القيمة true. وتمثل it العنصر الحالي.
fun main() {
val evens = listOf(1, 2, 3, 4, 5).filter { it % 2 == 0 }
println(evens) // [2, 4]
}متى لا تستخدموا it
إذا كان جسم lambda غير بسيط، فسمّوا المعلمة صراحةً. فالتسمية تحسّن الوضوح مقارنةً باستخدام it المختصر.
fun main() {
val users = listOf("alice", "bob")
// OK
users.forEach { println(it) }
// Clearer with a name when body is bigger
users.forEach { name ->
println("User: $name length=${name.length}")
}
}استخدام it في دوال lambda المتداخلة
انتبهوا عند استخدام دوال lambda المتداخلة: ترتبط كل it بأقرب lambda داخلية. وتجنب تسمية المعلمات الالتباس.
fun main() {
val nested = listOf(listOf(1, 2), listOf(3, 4))
// Both lambdas use it — confusing!
nested.forEach { outer ->
outer.forEach { inner ->
println("$outer -> $inner")
}
}
}استخدام it مع دوال السلاسل النصية
نمط شائع: تصفية السلاسل النصية أو تحويلها باستخدام it.
fun main() {
val names = listOf("Alice", "bob", "Charlie")
val upper = names.map { it.uppercase() }
println(upper)
}استخدام it مع الخصائص
يُعد it.property طريقة واضحة للوصول إلى الحقول عند تسلسل العمليات.
data class Person(val name: String, val age: Int)
fun main() {
val people = listOf(Person("Ana", 20), Person("Ben", 35))
val names = people.map { it.name }
println(names) // [Ana, Ben]
}دوال predicate مع it
تُقرأ دوال predicate (دوال lambda التي تُرجع Boolean) بصورة طبيعية عند استخدام it.
fun main() {
val nums = listOf(1, 4, 7, 9)
println(nums.any { it > 5 }) // true
println(nums.all { it > 0 }) // true
println(nums.none { it < 0 }) // true
}الدوال المخصصة مع it
أي دالة عالية الرتبة تحتوي على lambda بمعلمة واحدة تمنحكم it تلقائيًا.
fun <T> List<T>.firstWhere(predicate: (T) -> Boolean): T? {
for (item in this) if (predicate(item)) return item
return null
}
fun main() {
val n = listOf(3, 8, 4, 5).firstWhere { it > 5 }
println(n) // 8
}استخدام it داخل دوال النطاق
تستخدم بعض دوال النطاق (let وalso) it بوصفها المستقبل؛ بينما تستخدم دوال أخرى (apply وrun) this. اختاروا ما يناسبكم وفقًا لما إذا كنتم تريدون الإشارة إلى المستقبل صراحةً.
fun main() {
val name: String? = "Kotlin"
name?.let { println("hello $it") } // it = name
}تحقق سريع
متى يمكنكم استخدام it بدلًا من تسمية معلمة lambda؟
مراجعة
إن it هو الاسم الضمني للمعلمة الوحيدة في lambda ذات المعلمة الواحدة. استخدموه لاختصار دوال lambda القصيرة. وسمّوا المعلمات صراحةً عندما يكبر جسم الدالة أو قد يسبب التداخل التباسًا.
الأسئلة الشائعة
هل درس «it: المعامل الضمني» مجاني؟
نعم — نص درس «it: المعامل الضمني» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
ماذا ستتعلم في «it: المعامل الضمني»؟
استخدم المعامل الضمني 'it' في lambdas ذات المعامل الواحد. تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟
لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «it: المعامل الضمني»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟
نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ما هي Lambda؟ الصياغة والأنواع
- تمرير Lambdas إلى الدوال
- it: المعامل الضمني
- filter وmap وfind على المجموعات