कोटलिन में Enums को समझना:

May 07 2023
कोटलिन एक आधुनिक प्रोग्रामिंग भाषा है जो Android विकास समुदाय में तेजी से लोकप्रियता हासिल कर रही है। एनम वर्ग कोटलिन की सबसे शक्तिशाली विशेषताओं में से एक है।

कोटलिन एक आधुनिक प्रोग्रामिंग भाषा है जो Android विकास समुदाय में तेजी से लोकप्रियता हासिल कर रही है। एनम वर्ग कोटलिन की सबसे शक्तिशाली विशेषताओं में से एक है। Enums नामित स्थिरांक के एक सेट को परिभाषित करने का एक तरीका प्रदान करता है जिसका उपयोग विभिन्न संदर्भों में किया जा सकता है। इस लेख में, हम कोटलिन में एनम की मूल बातों का पता लगाएंगे और कुछ उन्नत सुविधाओं में गोता लगाएंगे जो उन्हें डेवलपर्स के लिए इतना शक्तिशाली उपकरण बनाती हैं।

परिचय

कोटलिन में एनम्स नामित स्थिरांक के एक सेट को परिभाषित करने का एक प्रकार-सुरक्षित तरीका है जिसका उपयोग आपके कोड में किया जा सकता है। कोटलिन में एक एनम क्लास एक विशेष प्रकार का वर्ग है जिसमें स्थिरांक का एक निश्चित सेट होता है, जिसे एनम स्थिरांक भी कहा जाता है।

आप कीवर्ड का उपयोग करके कोटलिन में एक एनम को परिभाषित कर सकते हैं enum class, उसके बाद एनम का नाम और घुंघराले ब्रेसिज़ में संलग्न एनम स्थिरांक की सूची।

enum class Direction {
    NORTH, SOUTH, EAST, WEST
}

आप कोटलिन में विभिन्न संदर्भों में एनम का उपयोग कर सकते हैं। उदाहरण के लिए, आप उन्हें पैरामीटर प्रकार या फ़ंक्शन में रिटर्न प्रकार के रूप में उपयोग कर सकते हैं।

fun getDirection(): Direction {
    return Direction.NORTH
}

fun getDirectionName(direction: Direction): String {
    return when (direction) {
        Direction.NORTH -> "North"
        Direction.SOUTH -> "South"
        Direction.EAST -> "East"
        Direction.WEST -> "West"
    }
}

कोटलिन में एनम नामित स्थिरांक के एक सेट को परिभाषित करने के लिए केवल एक प्रकार-सुरक्षित तरीके से अधिक हैं। वास्तव में, वे कई उन्नत सुविधाओं के साथ आते हैं जो आपके कोड को अधिक शक्तिशाली और लचीला बना सकते हैं। इस लेख में, हम इनमें से कुछ विशेषताओं का पता लगाएंगे और आपको दिखाएंगे कि उनका प्रभावी ढंग से उपयोग कैसे करें।

Enum कंस्ट्रक्टर और गुण

स्थिरांक के एक सेट को परिभाषित करने के अलावा, आप प्रत्येक एनम को एक एनम कंस्ट्रक्टर का उपयोग करके गुणों का अपना सेट भी दे सकते हैं। यहाँ एक उदाहरण है:

enum class Color(val rgb: Int) {
    RED(0xFF0000),
    GREEN(0x00FF00),
    BLUE(0x0000FF)
}

Enums के साथ इंटरफेस लागू करना

कोटलिन में एनम नियमित कक्षाओं की तरह ही इंटरफेस को भी लागू कर सकते हैं। यह तब उपयोगी हो सकता है जब आप एक सामान्य व्यवहार साझा करने वाले स्थिरांक के सेट को परिभाषित करना चाहते हैं। यहाँ एक उदाहरण है:

interface Printable {
    fun print()
}

enum class Direction : Printable {
    NORTH {
        override fun print() {
            println("North")
        }
    },
    SOUTH {
        override fun print() {
            println("South")
        }
    },
    EAST {
        override fun print() {
            println("East")
        }
    },
    WEST {
        override fun print() {
            println("West")
        }
    }
}

Enum एक्सटेंशन कार्य करता है

आप कोटलिन में एनम के लिए विस्तार कार्यों को भी परिभाषित कर सकते हैं, जैसे आप कक्षाओं के लिए कर सकते हैं। यह तब उपयोगी हो सकता है जब आप किसी ऐसे एनम में कार्यक्षमता जोड़ना चाहते हैं जो इसकी मूल परिभाषा द्वारा प्रदान नहीं किया गया है। यहाँ एक उदाहरण है:

enum class Color {
    RED, GREEN, BLUE
}

fun Color.print() {
    when (this) {
        Color.RED -> println("Red")
        Color.GREEN -> println("Green")
        Color.BLUE -> println("Blue")
    }
}

एनम गुण और कार्य

अंत में, आप कोटलिन में एक एनम वर्ग पर सीधे गुणों और कार्यों को भी परिभाषित कर सकते हैं। यह उपयोगी हो सकता है जब आप एक एनम में सभी स्थिरांक के लिए कुछ सामान्य कार्यक्षमता प्रदान करना चाहते हैं। यहाँ एक उदाहरण है:

enum class Planet(val mass: Double, val radius: Double) {
    EARTH(5.97e24, 6_371.0),
    MARS(6.39e23, 3_389.5),
    JUPITER(1.898e27, 69_911.0);

    fun surfaceGravity(): Double {
        val G = 6.67300E-11
        return G * mass / (radius * radius)
    }

    fun surfaceWeight(otherMass: Double): Double {
        return otherMass * surfaceGravity()
    }
}

val mars = Planet.MARS
val surfaceGravity = mars.surfaceGravity() // returns 3.71

val jupiter = Planet.JUPITER
val surfaceWeight = jupiter.surfaceWeight(100.0) // returns 236.24129999999998

एनम के साथ काम करते समय आपको जो पहला निर्णय लेना होगा, वह यह है कि एनम का उपयोग करना है या स्थिरांक का एक सेट। आम तौर पर, एनम का उपयोग तब किया जाना चाहिए जब आपके पास मूल्यों का एक निश्चित, सीमित सेट होता है जो एक अवधारणा का प्रतिनिधित्व करता है। दूसरी ओर, स्थिरांक अधिक उपयुक्त होते हैं जब आपके पास एक ही मान होता है जिसे आप कई स्थानों पर संदर्भित करना चाहते हैं।

Enum नामकरण सम्मेलन

अपने एनमों का नामकरण करते समय, अपने कोड को अधिक पठनीय और सुसंगत बनाने के लिए स्थापित नामकरण सम्मेलनों का पालन करना महत्वपूर्ण है। यहां कुछ दिशानिर्देशों पर विचार किया गया है:

  • अपने एनम्स को नाम देने के लिए एकवचन संज्ञाओं का उपयोग करें (उदाहरण के लिए, रंग के बजाय रंग)।
  • अपने एनम नामों में शब्दों को अलग करने के लिए अपरकेस अक्षरों और अंडरस्कोर का उपयोग करें (उदाहरण के लिए, MyEnum के बजाय MY_ENUM)।
  • जब तक वे व्यापक रूप से पहचाने नहीं जाते (उदाहरण के लिए, HTTP के बजाय HTTP) अपने एनम नामों में संक्षिप्ताक्षरों या संक्षिप्ताक्षरों का उपयोग करने से बचें।

Enums के साथ काम करते समय देखने के लिए कुछ सामान्य विरोधी पैटर्न हैं:

  • डेटाबेस के विकल्प के रूप में एनम का उपयोग करना। जबकि एनम डेटा स्टोर करने का एक सुविधाजनक तरीका हो सकता है, उन्हें उचित डेटाबेस के प्रतिस्थापन के रूप में उपयोग नहीं किया जाना चाहिए।
  • अत्यधिक उपयोग करना। सिर्फ इसलिए कि आप किसी चीज के लिए एक एनम को परिभाषित कर सकते हैं इसका मतलब यह नहीं है कि आपको चाहिए। विवेकपूर्ण तरीके से एनम का उपयोग करें और उपयुक्त होने पर अन्य विकल्पों (जैसे स्थिरांक या वर्ग) पर विचार करें।
  • व्यवहार को परिभाषित करने के लिए एनम का उपयोग करना। जबकि एनम इंटरफेस को लागू कर सकते हैं और कार्यों को परिभाषित कर सकते हैं, उनका उपयोग जटिल व्यवहार को परिभाषित करने के लिए नहीं किया जाना चाहिए। अधिक जटिल व्यवहार के बजाय कक्षाओं का प्रयोग करें।

अंत में, यह सुनिश्चित करने के लिए कि वे सही ढंग से व्यवहार कर रहे हैं, अपने एनमों का परीक्षण करना महत्वपूर्ण है। यहाँ कुछ युक्तियों को ध्यान में रखना है:

  • सभी एनम स्थिरांक का परीक्षण करें। पक्का करें कि हर कॉन्स्टेंट उम्मीद के मुताबिक काम कर रहा है.
  • एनम पर परिभाषित किसी भी कार्य या गुण का परीक्षण करें। सुनिश्चित करें कि वे अपेक्षित मान लौटा रहे हैं।
  • परीक्षण किनारे के मामले। सुनिश्चित करें कि आपके एनम किसी भी किनारे के मामलों को उचित रूप से संभाल रहे हैं।