كيفية نسخ أو استنساخ قائمة في Kotlin: دليل كامل
مرحبًا! بدأت للتو في تعلم Kotlin بعد Java، وواجهت مشكلة في نسخ القوائم.
في Java، كنت معتادًا على فعل شيء مثل `new ArrayList<>(originalList)` لإنشاء نسخة مستقلة. لكن في Kotlin، لاحظت أن التعيين البسيط `val copy = originalList` لا ينشئ نسخة، بل مجرد مرجع لنفس الكائن. جربت `originalList.toList()`، ولكن عندما أغير العناصر في النسخة، هل تظهر التغييرات في الأصل؟ أم أنني أخلط الأمور؟
إليك مثال يربكني:
```kotlin
data class Person(val name: String, var age: Int)
fun main() {
val original = mutableListOf(Person("Alice", 25), Person("Bob", 30))
val copy = original.toList() // هل هذه نسخة؟
// أحاول التغيير
(copy as MutableList)[0].age = 26 // أغير العمر في "النسخة"
println(original[0].age) // يطبع 26! لماذا تغير الأصل أيضًا؟
}
```
لماذا لا ينشئ `toList()` نسخة مستقلة كاملة؟ كيف يمكن عمل deep copy بشكل صحيح؟