खोज…


टिप्पणियों

कंप्यूटर प्रोग्रामिंग में, एक एनुमरेटेड टाइप (जिसे एन्यूमरेशन या एनुम [..] भी कहा जाता है) एक डेटा प्रकार होता है जिसमें नाम के मानों का एक सेट होता है जिसे तत्व, सदस्य या टाइप के एन्यूमरेटर कहते हैं। प्रगणक नाम आमतौर पर पहचानकर्ता होते हैं जो भाषा में स्थिरांक के रूप में व्यवहार करते हैं। एक वैरिएबल जिसे एक एनुमरेटेड प्रकार के रूप में घोषित किया गया है, किसी भी एन्यूमरेटर को एक मान के रूप में सौंपा जा सकता है।

विकिपीडिया: प्रगणित प्रकार

जावास्क्रिप्ट कमजोर रूप से टाइप किया गया है, चर को पहले से एक प्रकार के साथ घोषित नहीं किया गया है और इसमें एक देशी enum डेटा प्रकार नहीं है। यहां दिए गए उदाहरणों में एन्यूमरेटर्स, विकल्प और संभावित ट्रेड-ऑफ का अनुकरण करने के विभिन्न तरीके शामिल हो सकते हैं।

ऑब्जेक्ट का उपयोग कर एनम परिभाषा।

5.1

जावास्क्रिप्ट सीधे एन्यूमरेटर का समर्थन नहीं करता है लेकिन एनम की कार्यक्षमता की नकल की जा सकती है।

// Prevent the enum from being changed
const TestEnum = Object.freeze({
    One:1,
    Two:2,
    Three:3
});
// Define a variable with a value from the enum
var x = TestEnum.Two;
// Prints a value according to the variable's enum value
switch(x) {
    case TestEnum.One:
        console.log("111");
        break;

    case TestEnum.Two:
        console.log("222");
}

उपरोक्त गणना परिभाषा, निम्नानुसार भी लिखी जा सकती है:

var TestEnum = { One: 1, Two: 2, Three: 3 }
Object.freeze(TestEnum);

उसके बाद आप एक चर को परिभाषित कर सकते हैं और पहले की तरह प्रिंट कर सकते हैं।

वैकल्पिक परिभाषा

Object.freeze() विधि 5.1 संस्करण के बाद से उपलब्ध है। पुराने संस्करणों के लिए, आप निम्न कोड का उपयोग कर सकते हैं (ध्यान दें कि यह संस्करण 5.1 और बाद में भी काम करता है):

var ColorsEnum = {
    WHITE: 0,
    GRAY: 1,
    BLACK: 2
}
// Define a variable with a value from the enum
var currentColor = ColorsEnum.GRAY;

एक एनुम चर मुद्रण

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

// Define the enum
var ColorsEnum = { WHITE: 0, GRAY: 1, BLACK: 2 }
Object.freeze(ColorsEnum);
// Define the variable and assign a value
var color = ColorsEnum.BLACK;
if(color == ColorsEnum.BLACK) {
   console.log(color);    // This will print "2"
   var ce = ColorsEnum;
   for (var name in ce) {
     if (ce[name] == ce.BLACK)
       console.log(name);    // This will print "BLACK"
   } 
}

प्रतीकों का उपयोग कर एनमों को लागू करना

जैसा कि ईएस 6 ने प्रतीकों को पेश किया, जो कि दोनों अद्वितीय और अपरिवर्तनीय आदिम मूल्य हैं, जिनका उपयोग किसी Object संपत्ति की कुंजी के रूप में किया जा सकता है, एक एनम के लिए संभव मान के रूप में स्ट्रिंग्स का उपयोग करने के बजाय, प्रतीकों का उपयोग करना संभव है।

// Simple symbol
const newSymbol = Symbol();
typeof newSymbol === 'symbol' // true

// A symbol with a label
const anotherSymbol = Symbol("label");

// Each symbol is unique
const yetAnotherSymbol = Symbol("label");
yetAnotherSymbol === anotherSymbol; // false


const Regnum_Animale    = Symbol();
const Regnum_Vegetabile = Symbol();
const Regnum_Lapideum   = Symbol();

function describe(kingdom) {

  switch(kingdom) {

    case Regnum_Animale:
        return "Animal kingdom";
    case Regnum_Vegetabile:
        return "Vegetable kingdom";
    case Regnum_Lapideum:
        return "Mineral kingdom";
  }

}

describe(Regnum_Vegetabile);
// Vegetable kingdom

ECMAScript 6 लेख में प्रतीक इस नए आदिम प्रकार को अधिक विस्तार से कवर करते हैं।

स्वचालित गणना मूल्य

5.1

यह उदाहरण दर्शाता है कि किसी एनम सूची में प्रत्येक प्रविष्टि के लिए स्वचालित रूप से एक मूल्य कैसे निर्दिष्ट किया जाए। यह दो एनमों को गलती से समान मान रखने से रोकेगा। नोट: Object.freeze ब्राउज़र समर्थन

var testEnum = function() {
    // Initializes the enumerations
    var enumList = [
        "One",
        "Two",
        "Three"
    ];
    enumObj = {};
    enumList.forEach((item, index)=>enumObj[item] = index + 1); 
    
    // Do not allow the object to be changed
    Object.freeze(enumObj);
    return enumObj;
}();

console.log(testEnum.One); // 1 will be logged

var x = testEnum.Two;

switch(x) {
    case testEnum.One:
        console.log("111");
        break;

    case testEnum.Two:
        console.log("222"); // 222 will be logged
        break;
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow