Ο τύπος enum στη C# αντιπροσωπεύει ένα σταθερό σύνολο από ονομασμένες σταθερές (μια απαρίθμηση). Ο κύριος σκοπός του είναι να παρέχει έναν τρόπο ασφαλή ως προς τον τύπο για να αλληλεπιδράς με αριθμητικές σταθερές, περιορίζοντας τις διαθέσιμες τιμές σε ένα προκαθορισμένο σύνολο. Μπορούμε να ορίσουμε ένα απλό enum ως εξής:
enum Season
{
Spring,
Summer,
Autumn,
Winter
}
Αν δεν οριστούν ρητά, τα μέλη του enum θα λάβουν αυτόματα αυξανόμενες ακέραιες τιμές, με την πρώτη τιμή να είναι μηδέν. Μπορούμε επίσης να ορίσουμε τιμές ρητά:
enum Answer
{
Maybe = 1,
Yes = 3,
No = 5
}
Σε αυτή την άσκηση θα επεξεργάζεσαι γραμμές καταγραφής.
Κάθε γραμμή καταγραφής είναι μια συμβολοσειρά με την εξής μορφή: "[<LVL>]: <MESSAGE>".
Αυτά είναι τα διάφορα επίπεδα καταγραφής:
TRC (ίχνος)DBG (debug)INF (πληροφορία)WRN (προειδοποίηση)ERR (σφάλμα)FTL (θανατηφόρο)Έχεις τρεις εργασίες.
Όρισε ένα enum LogLevel που έχει έξι στοιχεία, τα οποία αντιστοιχούν στα παραπάνω επίπεδα καταγραφής.
TraceDebugInfoWarningErrorFatalΈπειτα, υλοποίησε τη (static) μέθοδο LogLine.ParseLogLevel() για να αναλύεις το επίπεδο καταγραφής μιας γραμμής καταγραφής:
LogLine.ParseLogLevel("[INF]: File deleted")
// => LogLevel.Info
Δυστυχώς, κάποιες φορές μερικές γραμμές καταγραφής έχουν άγνωστο επίπεδο καταγραφής. Για να χειριστείς ομαλά αυτές τις γραμμές καταγραφής, πρόσθεσε ένα στοιχείο Unknown στο enum LogLevel, το οποίο θα πρέπει να επιστρέφεται όταν αναλύεται ένα άγνωστο επίπεδο καταγραφής:
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 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.