मूल्य से Enum नाम प्राप्त करें?

जवाब देने के दौरान मैंने बस इस विषय पर ठोकर खाई इस सवाल के लिए।

अनिवार्य रूप से, मैं जो पूछ रहा हूं वह उस धागे में किए गए कार्यों के विपरीत है। इसके नाम से एनम का मूल्य प्राप्त करने के बजाय, मैं इसका नाम इसके नाम से प्राप्त करना चाहता हूं। यह कैसे किया जाता है?

0
जोड़ा संपादित
विचारों: 1
@EricJablow मुझे नहीं लगता ...: /
जोड़ा लेखक Jeroen Bollen, स्रोत
Enums एक दूसरे के बराबर सेट किया जा सकता है: enum {white, gray = 1, gray = 1, black}; । उन्हें नामित enums से बनाया जा सकता है: enum {user = 4, group = 2; ओवर = 1;} 'इन्हें छेड़छाड़ की जा सकती है: enum all = user | समूह | अन्य; आप 7 को "सभी" यहां कैसे परिवर्तित करेंगे>
जोड़ा लेखक Eric Jablow, स्रोत

1 उत्तर

आप इसे ठीक वही करते हैं, लेकिन जैसे एरिक बताते हैं, यह सही नहीं है:

import std.conv;
import std.stdio;

enum LogLevel { ALL, INFO, WARNING }
enum Color {white, gray = 1, grey =1, black}

void main()
{
     enum l = to!LogLevel(1);
     assert(l == LogLevel.INFO);
     writeln(to!string(l));

     enum c = to!Color(1);
     writeln(to!string(c));
}

INFO
gray
0
जोड़ा
यह बहुत बहुत अच्छा जवाब है। स्विच में बहुत से मामलों की आवश्यकता नहीं है। एक्स मैक्रो की कोई ज़रूरत नहीं है। और फ़ंक्शन में किसी मामले में enum मान को अपडेट करना और गलत नाम लौटने के लिए भूलने का कोई जोखिम नहीं है।
जोड़ा लेखक Jack, स्रोत