Der enum-Typ in C# steht für eine feste Menge benannter Konstanten (eine Aufzählung). Sein Hauptzweck ist es, einen typsicheren Umgang mit numerischen Konstanten zu ermöglichen und die verfügbaren Werte auf eine vorab festgelegte Menge zu begrenzen. Ein einfaches Enum kannst du so definieren:
enum Season
{
Spring,
Summer,
Autumn,
Winter
}
Wenn du die Werte nicht explizit angibst, bekommen die Enum-Member automatisch aufsteigende Ganzzahlen zugewiesen, wobei der erste Wert null ist. Es ist auch möglich, die Werte explizit zuzuweisen:
enum Answer
{
Maybe = 1,
Yes = 3,
No = 5
}
In dieser Übung verarbeitest du Logzeilen.
Jede Logzeile ist ein String, der wie folgt formatiert ist: "[<LVL>]: <MESSAGE>".
Das sind die verschiedenen Log-Level:
TRC (trace)DBG (debug)INF (info)WRN (warning)ERR (error)FTL (fatal)Du hast drei Aufgaben.
Definiere ein LogLevel-Enum mit sechs Elementen, die den oben genannten Log-Leveln entsprechen.
TraceDebugInfoWarningErrorFatalImplementiere als Nächstes die (statische) LogLine.ParseLogLevel()-Methode, um den Log-Level einer Logzeile zu parsen:
LogLine.ParseLogLevel("[INF]: File deleted")
// => LogLevel.Info
Leider haben gelegentlich einige Logzeilen einen unbekannten Log-Level. Um solche Logzeilen sauber zu behandeln, füge dem LogLevel-Enum ein Unknown-Element hinzu, das beim Parsen eines unbekannten Log-Levels zurückgegeben werden soll:
LogLine.ParseLogLevel("[XYZ]: Overly specific, out of context message")
// => LogLevel.Unknown
Der Log-Level einer Logzeile ist recht ausführlich. Um den Speicherplatz zu reduzieren, der zum Speichern der Logzeilen benötigt wird, wurde ein Kurzformat entwickelt: "[<ENCODED_LEVEL>]:<MESSAGE>".
Der kodierte Log-Level ist eine einfache Zuordnung eines Log-Levels zu einer Zahl:
Unknown - 0
Trace - 1
Debug - 2
Info - 4
Warning - 5
Error - 6
Fatal - 42
Implementiere die (statische) LogLine.OutputForShortLog()-Methode, die eine Logzeile im Kurzformat ausgeben kann:
LogLine.OutputForShortLog(LogLevel.Error, "Stack overflow")
// => "6:Stack overflow"
Melde dich bei Exercism an, um C# mit 62 Konzepte178 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.