C# का enum टाइप नामित कॉन्स्टेंट का एक निश्चित सेट दर्शाता है (एक एन्यूमरेशन)। इसका मुख्य उद्देश्य संख्यात्मक कॉन्स्टेंट के साथ काम करने का टाइप-सेफ तरीका देना है, जो उपलब्ध वैल्यू को पहले से तय सेट तक सीमित करता है। एक साधारण एनम इस तरह बनाया जा सकता है:
enum Season
{
Spring,
Summer,
Autumn,
Winter
}
अगर स्पष्ट रूप से परिभाषित न किया जाए, तो एनम के सदस्यों को अपने आप बढ़ती हुई पूर्णांक वैल्यू असाइन हो जाती हैं, जिनमें पहली वैल्यू शून्य होती है। वैल्यू को स्पष्ट रूप से असाइन करना भी संभव है:
enum Answer
{
Maybe = 1,
Yes = 3,
No = 5
}
इस अभ्यास में आप लॉग लाइनों पर काम करेंगे।
हर लॉग लाइन एक स्ट्रिंग होती है, जिसका फॉर्मैट इस तरह होता है: "[<LVL>]: <MESSAGE>".
ये अलग-अलग लॉग लेवल हैं:
TRC (trace)DBG (debug)INF (info)WRN (warning)ERR (error)FTL (fatal)आपको तीन काम करने हैं।
एक LogLevel एनम बनाइए, जिसमें ऊपर दिए गए लॉग लेवलों के अनुरूप छह एलिमेंट हों।
TraceDebugInfoWarningErrorFatalइसके बाद, किसी लॉग लाइन का लॉग लेवल पार्स करने के लिए (static) LogLine.ParseLogLevel() मेथड लागू कीजिए:
LogLine.ParseLogLevel("[INF]: File deleted")
// => LogLevel.Info
दुर्भाग्य से कभी-कभी कुछ लॉग लाइनों में अज्ञात लॉग लेवल होता है। ऐसी लॉग लाइनों को ठीक से संभालने के लिए LogLevel एनम में एक Unknown एलिमेंट जोड़िए, जो किसी अज्ञात लॉग लेवल को पार्स करते समय लौटाया जाना चाहिए:
LogLine.ParseLogLevel("[XYZ]: Overly specific, out of context message")
// => LogLevel.Unknown
लॉग लाइन का लॉग लेवल काफी लंबा होता है। लॉग लाइनों को संग्रहीत करने में जितनी डिस्क स्पेस लगती है, उसे कम करने के लिए एक छोटा फॉर्मैट बनाया गया है: "[<ENCODED_LEVEL>]:<MESSAGE>".
एनकोड किया गया लॉग लेवल बस हर लॉग लेवल के लिए एक संख्या तय करता है:
Unknown - 0
Trace - 1
Debug - 2
Info - 4
Warning - 5
Error - 6
Fatal - 42
(static) LogLine.OutputForShortLog() मेथड लागू कीजिए, जो छोटे फॉर्मैट में लॉग लाइन आउटपुट कर सके:
LogLine.OutputForShortLog(LogLevel.Error, "Stack overflow")
// => "6:Stack overflow"
Exercism पर साइन अप कीजिए और C# को 62 कॉन्सेप्ट178 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।