كيفية نسخ قائمة (list) بشكل صحيح في Kotlin: الاستنساخ، النسخ والنسخ العميق
مرحباً بالجميع! لقد بدأت للتو في تعلم Kotlin وواجهت مشكلة غير متوقعة عند العمل مع القوائم.
لدي قائمة أرقام `originalList`، وأريد عمل نسخة منها لتعديل النسخة دون التأثير على الأصل. جربت ببساطة تعيين قائمة لأخرى:
```kotlin
fun main() {
val originalList = mutableListOf(1, 2, 3, 4, 5)
val copiedList = originalList
copiedList.add(6)
println("Original: $originalList") // [1, 2, 3, 4, 5, 6] — تغيرت!
println("Copied: $copiedList") // [1, 2, 3, 4, 5, 6]
}
```
كما ترون، عند تعديل `copiedList` يتغير `originalList` أيضاً. يحدث هذا لأن المتغير `copiedList` يشير إلى نفس الكائن في الذاكرة، وليس إلى نسخة جديدة من البيانات.
أعلم أنه في Java لنسخ القوائم كان يُستخدم `new ArrayList<>(originalList)`. لكن هل توجد طرق أكثر توافقاً مع Kotlin؟ هل هناك دوال مثل `.clone()`، `.copy()`، أو `toList()`؟ وماذا أفعل إذا كانت القائمة تحتوي على كائنات معقدة تحتاج إلى نسخ عميق؟