0Pricing
Kotlin Academy · درس

الوصول إلى العناصر: ‏get وfirst وlast وgetOrNull

استرجع العناصر باستخدام أدوات الوصول المعتمدة على الفهارس والأدوات الوظيفية.

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

طرق متعددة للوصول

يوفر Kotlin عدة طرق لقراءة العناصر: حسب الفهرس باستخدام [] وget، وحسب الموضع باستخدام first وlast، وبطريقة آمنة باستخدام getOrNull وfirstOrNull.

الوصول بالفهرس باستخدام []

صيغة الأقواس المربعة هي اختصار لـ get(index). وتطرح IndexOutOfBoundsException إذا كان الفهرس غير صالح.

fun main() {
    val items = listOf("a", "b", "c")
    println(items[0]) // a
    println(items[2]) // c
}

get مقابل []

إن list.get(i) مطابقة تمامًا لـ list[i]؛ الاختلاف في الصياغة فقط، أما السلوك فواحد.

fun main() {
    val items = listOf(10, 20, 30)
    println(items.get(1)) // 20
    println(items[1])     // 20
}

استخدام getOrNull للوصول الآمن

تُرجع getOrNull(i) القيمة null بدلًا من طرح استثناء إذا كان الفهرس خارج النطاق.

fun main() {
    val items = listOf("x", "y")
    println(items.getOrNull(0)) // x
    println(items.getOrNull(5)) // null
}

getOrElse مع قيمة افتراضية

تحسب getOrElse(i) { default } قيمة افتراضية بطريقة مؤجلة إذا كان الفهرس غير صالح.

fun main() {
    val items = listOf(1, 2, 3)
    println(items.getOrElse(10) { -1 }) // -1
    println(items.getOrElse(1) { -1 })  // 2
}

first وlast

تُرجع first() وlast() العنصرين المطابقين؛ وتطرح كلتاهما استثناءً إذا كانت القائمة فارغة.

fun main() {
    val nums = listOf(5, 8, 12)
    println(nums.first()) // 5
    println(nums.last())  // 12
}

firstOrNull وlastOrNull

تُرجع الصيغ ...OrNull القيمة null بدلًا من طرح استثناء عند التعامل مع قوائم فارغة، ولذلك فهي أكثر أمانًا بكثير.

fun main() {
    val empty: List<Int> = emptyList()
    println(empty.firstOrNull()) // null
    println(empty.lastOrNull())  // null
}

صيغ المسند

تُرجع first { predicate } أول عنصر مطابق؛ أما find { predicate } فهي الاسم البديل الذي يقبل null للدالة firstOrNull { predicate }.

fun main() {
    val nums = listOf(3, 7, 8, 11)
    println(nums.first { it > 5 })       // 7
    println(nums.firstOrNull { it > 100 }) // null
    println(nums.find { it > 100 })       // null (same)
}

الوصول إلى قيم Map

تستخدم Maps صيغة [] نفسها، لكنها تُرجع قيمة يمكن أن تكون null. وتطرح getValue(key) استثناءً إذا كان المفتاح مفقودًا، بينما توفر getOrDefault قيمة بديلة.

fun main() {
    val ages = mapOf("Alice" to 30, "Bob" to 25)
    println(ages["Alice"])             // 30
    println(ages["Charlie"])           // null
    println(ages.getOrDefault("Z", 0)) // 0
}

elementAt وelementAtOrNull

توفر المجموعات Set وغيرها من المجموعات التي لا تدعم الفهارس أيضًا elementAt(i) وصيغتها البديلة OrNull.

fun main() {
    val s = setOf("a", "b", "c")
    println(s.elementAt(1))          // b
    println(s.elementAtOrNull(10))   // null
}

اختيار أداة الوصول المناسبة

فضّل الصيغ الآمنة، مثل getOrNull وfirstOrNull وgetOrDefault، ما لم تتمكن من إثبات صلاحية الفهرس. فالاستثناءات مكلفة ويسهل نسيان معالجتها.

fun headOf(list: List<Int>): Int? = list.firstOrNull()
fun main() {
    println(headOf(listOf(1, 2, 3))) // 1
    println(headOf(emptyList()))      // null
}

تحقق سريع

ما أداة الوصول التي تُرجع null بدلًا من طرح استثناء عندما يكون الفهرس خارج النطاق؟

مراجعة

استخدم [] وget للوصول المباشر، مع العلم أنهما يطرحان استثناءً عند حدوث خطأ. وفضّل getOrNull وfirstOrNull وlastOrNull وgetOrDefault وgetOrElse عندما تكون الحدود غير صالحة محتملًا. تستخدم Maps [] للوصول الذي يقبل null، وgetValue للوصول الذي يطرح استثناءً.

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

هل درس «الوصول إلى العناصر: ‏get وfirst وlast وgetOrNull» مجاني؟

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

ماذا ستتعلم في «الوصول إلى العناصر: ‏get وfirst وlast وgetOrNull»؟

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

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

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

كم من الوقت يستغرق درس «الوصول إلى العناصر: ‏get وfirst وlast وgetOrNull»؟

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

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

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

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

  1. ‏listOf وsetOf وmapOf: المجموعات للقراءة فقط
  2. ‏mutableListOf وmutableMapOf: منشئات قابلة للتغيير
  3. الوصول إلى العناصر: ‏get وfirst وlast وgetOrNull
  4. تكرار المجموعات وتحويلها باستخدام المكتبة القياسية
← العودة إلى Kotlin Academy