Avatar ·

Kotlin में कुशल एनम: मान द्वारा रिवर्स लुकअप कैसे करें?

सभी को नमस्ते! मैं हाल ही में Kotlin में लिख रहा हूँ और मुझे इस समस्या का सामना करना पड़ा। \n\nमेरे पास ऑर्डर स्टेटस के लिए एक enum क्लास है:\n\n```kotlin\nenum class OrderStatus(val code: Int) {\n PENDING(1),\n PROCESSING(2),\n SHIPPED(3),\n DELIVERED(4),\n CANCELLED(5)\n}\n```\n\nमैं डेटाबेस से स्टेटस का एक न्यूमेरिक कोड प्राप्त करता हूँ (उदाहरण के लिए, 3), और मुझे संबंधित enum मान — `OrderStatus.SHIPPED` प्राप्त करने की आवश्यकता है। \n\nमुझे पता है कि Java में रिवर्स लुकअप के लिए अक्सर एक स्टैटिक `HashMap` बनाया जाता है। लेकिन Kotlin में यह बोझिल लगता है। मैंने एक एक्सटेंशन फंक्शन लिखने की कोशिश की:\n\n```kotlin\nfun OrderStatus.Companion.fromCode(code: Int): OrderStatus? {\n return values().find { it.code == code }\n}\n```\n\nलेकिन यह धीमा काम करता है, क्योंकि हर बार सभी मानों पर लूप चलता है। 5 स्टेटस के लिए यह क्रिटिकल नहीं है