IntArray vs Array<Int> في Kotlin: ما الفرق وماذا تختار؟
مرحبًا أيها الزملاء! بدأت في تعلم Kotlin وواجهت سوء فهم: هناك نوعان في اللغة للعمل مع مصفوفات الأعداد الصحيحة — IntArray و Array. للوهلة الأولى يبدوان متشابهين، لكن المترجم يشتكي عندما أحاول خلطهما.
إليك مثال حيرني:
```kotlin
val arr1: IntArray = intArrayOf(1, 2, 3)
val arr2: Array = arrayOf(1, 2, 3)
// أحاول تعيين أحدهما للآخر — خطأ!
// arr1 = arr2 // Type mismatch
```
لماذا هذا؟ فكلاهما يخزن أعدادًا صحيحة. قرأت أن IntArray هو نوع بدائي (primitive)، بينما Array هو نوع مرجعي (reference type)، لكنني لا أفهم كيف يؤثر ذلك على الأداء ومتى أستخدم أيًا منهما.
كما لاحظت أن لديهما طرقًا مختلفة. على سبيل المثال، لدى IntArray دوال sum() و average() مباشرة من الصندوق، بينما مع Array تحتاج إلى كتابة .map { it.toDouble() }. لماذا هذا؟
وسؤال آخر: إذا كتبت دالة تقبل مصفوفة أرقام، أي نوع يجب أن أختار لكي تعمل مع كل من IntArray و Array؟ جربت استخدام List — إنه يعمل، لكنه ليس مصفوفة.