0Pricing
Kotlin Academy · درس

‏listOf وsetOf وmapOf: المجموعات للقراءة فقط

أنشئ مجموعات غير قابلة للتغيير وتعرّف على أنماط الوصول إليها.

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

دوال الإنشاء الثلاث

توفر مكتبة Kotlin القياسية listOf وsetOf وmapOf لإنشاء مجموعات للقراءة فقط. وتعني القراءة فقط أنه لا يمكنكم الإضافة أو الحذف عبر الواجهة.

إنشاء قائمة

listOf تنشئ List<T> للقراءة فقط. يُستدل على نوع العناصر من الوسيطات.

fun main() {
    val fruits = listOf("apple", "banana", "cherry")
    println(fruits)        // [apple, banana, cherry]
    println(fruits.size)   // 3
}

إنشاء مجموعة

setOf تُرجع Set<T> للقراءة فقط. تُزال العناصر المكررة تلقائيًا.

fun main() {
    val tags = setOf("kotlin", "java", "kotlin", "android")
    println(tags) // [kotlin, java, android]
    println(tags.size) // 3
}

إنشاء Map

تستقبل mapOf أزواجًا من الشكل key to value وتُرجع Map<K, V> للقراءة فقط.

fun main() {
    val ages = mapOf("Alice" to 30, "Bob" to 25)
    println(ages["Alice"]) // 30
    println(ages.keys)     // [Alice, Bob]
}

تعليقات الأنواع

إذا كان النوع المستنتج غير صحيح، أو كانت القائمة فارغة، فحدّد معاملات النوع صراحةً.

fun main() {
    val empty: List<String> = listOf()
    val numbers: List<Int> = listOf(1, 2, 3)
    val emptyMap: Map<String, Int> = mapOf()
    println("empty=${empty}, n=${numbers}, m=${emptyMap}")
}

الصيغ الفارغة

استخدم emptyList() وemptySet() وemptyMap() عندما تريد صراحةً مجموعة فارغة. يكون ذلك أوضح من استخدام listOf() مع معامل نوع عندما تكون النية مهمة.

fun main() {
    val xs = emptyList<String>()
    val ys = emptySet<Int>()
    val zs = emptyMap<String, Int>()
    println("${xs.size}, ${ys.size}, ${zs.size}") // 0, 0, 0
}

للقراءة فقط... فعلًا للقراءة فقط

لا تحتوي واجهة List على add. لذلك يرفض المترجم إجراء التغيير.

fun main() {
    val items = listOf(1, 2, 3)
    // items.add(4) // ERROR: List has no add
    val bigger = items + 4 // creates new list
    println(bigger) // [1, 2, 3, 4]
}

التنفيذ الداخلي

في الواقع، تُرجع listOf كائن ArrayList من Java مغلّفًا بعرض غير قابل للتعديل. تعني خاصية القراءة فقط وجود عقد على مستوى الواجهة، لا ضمانًا وقت التشغيل ضد الانعكاس.

fun main() {
    val xs = listOf(1, 2, 3)
    println(xs::class.simpleName) // ArrayList
}

الأزواج وto

تنشئ الدالة الوسطية to كائنًا من النوع Pair<A, B>، وهي مفيدة لإنشاء قيم Map الحرفية والصفوف.

fun main() {
    val pair = "key" to 42
    println(pair) // (key, 42)
    val m = mapOf("a" to 1, "b" to 2)
    for ((k, v) in m) println("$k -> $v")
}

التكرار على المجموعات للقراءة فقط

تدعم المجموعات للقراءة فقط جميع أنماط التكرار القياسية: for وforEach وmap وfilter.

fun main() {
    val nums = setOf(1, 2, 3, 4)
    val doubled = nums.map { it * 2 }
    println(doubled) // [2, 4, 6, 8]
}

دمج القوائم

ينتج العامل + قائمة جديدة مدمجة، مع الحفاظ على سلوك القراءة فقط.

fun main() {
    val a = listOf(1, 2)
    val b = listOf(3, 4)
    val combined = a + b
    println(combined) // [1, 2, 3, 4]
}

تحقق سريع

ماذا يحدث عند استدعاء add(4) على قائمة أُنشئت باستخدام listOf(1, 2, 3)؟

مراجعة

تنشئ listOf وsetOf وmapOf مجموعات للقراءة فقط. ولا يمكن تعديلها من خلال واجهاتها. استخدم + لإنتاج مجموعات جديدة، واستخدم emptyList() وemptySet() وemptyMap() لإنشاء مجموعات فارغة محددة النوع.

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

هل درس «‏listOf وsetOf وmapOf: المجموعات للقراءة فقط» مجاني؟

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

ماذا ستتعلم في «‏listOf وsetOf وmapOf: المجموعات للقراءة فقط»؟

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

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

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

كم من الوقت يستغرق درس «‏listOf وsetOf وmapOf: المجموعات للقراءة فقط»؟

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

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

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

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

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