Avatar ·

التعدادات الفعالة في Kotlin: كيفية إجراء البحث العكسي حسب القيمة؟

مرحبًا بالجميع! أنا أكتب بلغة Kotlin مؤخرًا وواجهت هذه المهمة. لدي فئة enum لحالات الطلب: ```kotlin enum class OrderStatus(val code: Int) { PENDING(1), PROCESSING(2), SHIPPED(3), DELIVERED(4), CANCELLED(5) } ``` من قاعدة البيانات أحصل على رمز رقمي للحالة (مثل 3)، وأحتاج إلى الحصول على قيمة enum المقابلة — `OrderStatus.SHIPPED`. أعلم أنه في Java غالبًا ما يتم استخدام `HashMap` ثابت للبحث العكسي. لكن في Kotlin يبدو هذا مرهقًا. جربت كتابة دالة تمديد: ```kotlin fun OrderStatus.Companion.fromCode(code: Int): OrderStatus? { return values().find { it.code == code } } ``` لكن هذا يعمل ببطء لأنه يمر عبر جميع القيم في كل مرة. بالنسبة لـ 5 حالات، هذا ليس حرجًا، لكن في المشروع هناك enum يحتوي على 30+ قيمة، وأخشى أنه مع البيانات الكبيرة سيؤدي ذلك إلى تباطؤ. السؤال: كيف يمكن تنفيذ بحث عكسي فعال (reverse lookup) في enums في Kotlin؟ إذا