Тип enum у C# представляє фіксований набір іменованих констант (перелічення). Його головна мета - забезпечити типобезпечний спосіб роботи з числовими константами, обмежуючи доступні значення заздалегідь визначеним набором. Простий enum можна визначити так:
enum Season
{
Spring,
Summer,
Autumn,
Winter
}
Якщо не визначити значення явно, члени enum автоматично отримають цілі значення, що збільшуються на одиницю, а перше з них дорівнюватиме нулю. Також можна присвоїти значення явно:
enum Answer
{
Maybe = 1,
Yes = 3,
No = 5
}
У цій вправі ми будемо обробляти рядки журналу.
Кожен рядок журналу записано як рядок тексту (англ. string) такого формату: "[<LVL>]: <MESSAGE>".
Це різні рівні логування:
TRC (трасування)DBG (налагодження)INF (інформація)WRN (попередження)ERR (помилка)FTL (фатальна помилка)На нас чекають три завдання.
Визначте перелік LogLevel із шістьма елементами, що відповідають наведеним вище рівням логування.
TraceDebugInfoWarningErrorFatalДалі реалізуйте (статичний) метод 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
Реалізуйте (статичний) метод LogLine.OutputForShortLog(), який виводить скорочений формат рядка журналу:
LogLine.OutputForShortLog(LogLevel.Error, "Stack overflow")
// => "6:Stack overflow"
Зареєструйтеся на Exercism, щоб вивчати й опановувати C#, а також 62 концепції178 вправ та справжнє наставництво від людей, і все це безкоштовно.