Avatar ·

كيفية نسخ قائمة (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()`؟ وماذا أفعل إذا كانت القائمة تحتوي على كائنات معقدة تحتاج إلى نسخ عميق؟