المصفوفات في Kotlin: لا تخف، الأمر بسيط
\n\nإذا كنت تنتقل من Java إلى Kotlin أو بدأت للتو في تعلم هذه اللغة الحديثة، فإن سؤال "كيفية تهيئة مصفوفة في Kotlin بالقيم" يظهر على الفور تقريبًا. على Stack Overflow، جمع هذا الموضوع آلاف المشاهدات - مما يعني أن الموضوع مهم حقًا.
\n\nالخبر السار: جعلت Kotlin العمل مع المصفوفات أكثر سهولة بكثير من Java. الخبر السيئ: هناك عدة طرق، وغالبًا ما يختلط الأمر على المبتدئين. دعنا نستعرض مرة واحدة وإلى الأبد جميع خيارات تهيئة مصفوفة Kotlin - من البسيط إلى المعقد، مع أمثلة برمجية حقيقية.
\n\n1. الطريقة الأسهل: arrayOf()
\n\nالدالة arrayOf() هي خبزك اليومي. تنشئ مصفوفة من القيم المُمررة، وتحدد النوع تلقائيًا.
// مصفوفة أعداد صحيحة\nval numbers = arrayOf(1, 2, 3, 4, 5)\n\n// مصفوفة نصوص\nval fruits = arrayOf("تفاحة", "موز", "برتقال")\n\n// مصفوفة من نوع مختلط (Any)\nval mixed = arrayOf(42, "Kotlin", true)\n\nprintln(numbers.contentToString()) // [1, 2, 3, 4, 5]\nprintln(fruits.contentToString()) // [تفاحة, موز, برتقال]\n\n\nهام: arrayOf() تنشئ Array<T> - مصفوفة كائنية. إذا كنت بحاجة لأنواع بدائية (int, char, boolean) للأداء، تابع القراءة.
2. المصفوفات البدائية: intArrayOf(), doubleArrayOf() وغيرها
\n\nتقدم Kotlin دوال متخصصة لكل نوع بدائي. توفر الذاكرة وتعمل بشكل أسرع:
\n\n// أعداد صحيحة\nval intArr = intArrayOf(10, 20, 30, 40, 50)\n\n// أعداد عشرية\nval doubleArr = doubleArrayOf(1.5, 2.7, 3.14)\n\n// قيم منطقية\nval boolArr = booleanArrayOf(true, false, true)\n\n// أحرف\nval charArr = charArrayOf('K', 'o', 't', 'l', 'i', 'n')\n\n// بايتات\nval byteArr = byteArrayOf(0x48, 0x65, 0x6C, 0x6C, 0x6F) // "Hello"\n\nprintln(intArr.joinToString()) // 10, 20, 30, 40, 50\n\n\nالقائمة الكاملة: intArrayOf, doubleArrayOf, floatArrayOf, longArrayOf, shortArrayOf, byteArrayOf, booleanArrayOf, charArrayOf.
متى تستخدمها؟ إذا كنت تعمل مع بيانات كبيرة أو تكتب كودًا عالي الأداء - استخدم المصفوفات البدائية. للمهام العادية، arrayOf() كافية تمامًا.
3. مُنشئ المصفوفة: Array(size) مع لامدا
\n\nالطريقة الأكثر مرونة لتهيئة مصفوفة في Kotlin هي استخدام المُنشئ مع تعبير لامدا. تحدد الحجم وقاعدة التعبئة:
\n\n// مربعات الأعداد من 0 إلى 4\nval squares = Array(5) { i -> i * i }\nprintln(squares.contentToString()) // [0, 1, 4, 9, 16]\n\n// مصفوفة من 10 أعداد عشوائية\nimport kotlin.random.Random\nval randoms = Array(10) { Random.nextInt(100) }\nprintln(randoms.contentToString()) // [42, 17, 83, 5, 91, ...]\n\n// مصفوفة نصوص بنمط\nval labels = Array(3) { index -> "العنصر #${index + 1}" }\nprintln(labels.contentToString()) // [العنصر #1, العنصر #2, العنصر #3]\n\n\nتستقبل اللامدا فهرس العنصر (من 0 إلى size-1) ويجب أن تُرجع قيمة. هذه أداة قوية - يمكنك ملء المصفوفة بأي قاعدة، بما في ذلك استدعاء الدوال.
\n\n4. arrayOfNulls() — مصفوفة بخلايا فارغة
\n\nأحيانًا تحتاج إلى إنشاء مصفوفة وملؤها لاحقًا. لهذا يوجد arrayOfNulls():
// مصفوفة من 5 عناصر null\nval nullArray = arrayOfNulls<String>(5)\nprintln(nullArray.contentToString()) // [null, null, null, null, null]\n\n// نملؤها لاحقًا\nnullArray[0] = "الأول"\nnullArray[2] = "الثالث"\nprintln(nullArray.contentToString()) // [الأول, null, الثالث, null, null]\n\n\nيجب تحديد النوع صراحةً — المترجم