Avatar ·

كيفية نسخ أو استنساخ قائمة في 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 بشكل صحيح؟