التعدادات الفعالة في 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؟ إذا