Οι μέθοδοι επέκτασης σου επιτρέπουν να προσθέσεις μεθόδους σε υπάρχοντες τύπους χωρίς να δημιουργήσεις νέο παράγωγο τύπο, χωρίς επαναμεταγλώττιση ή άλλη τροποποίηση του αρχικού τύπου. Ορίζονται ως στατικές μέθοδοι, αλλά καλούνται με τη σύνταξη μεθόδων στιγμιοτύπου. Πριν από την πρώτη τους παράμετρο μπαίνει ο τροποποιητής this, ο οποίος προσδιορίζει σε ποιον τύπο ενεργεί η μέθοδος, ενώ οι μέθοδοι αποκτούν εμβέλεια σε επίπεδο χώρου ονομάτων.
public static int WordCount(this string str)
{
return str.Split().Length;
}
"Hello World".WordCount();
// => 2
Σε αυτή την άσκηση θα επεξεργάζεσαι γραμμές καταγραφής.
Κάθε γραμμή καταγραφής είναι μια συμβολοσειρά με την εξής μορφή: "[<LEVEL>]: <MESSAGE>".
Υπάρχουν τρία διαφορετικά επίπεδα καταγραφής:
INFOWARNINGERRORΈχεις αρκετές εργασίες, καθεμία από τις οποίες θα παίρνει μια γραμμή καταγραφής και θα σου ζητά να κάνεις κάτι με αυτήν.
Κοιτάζοντας τις καταγραφές του προηγούμενου μήνα, βλέπεις ότι το μήνυμα δοκιμής βρίσκεται πάντα μετά από μια συγκεκριμένη υποσυμβολοσειρά. Καθώς προβλέπεις ότι θα χρειαστεί να εξαγάγεις το μήνυμα δοκιμής κάποια στιγμή στο άμεσο μέλλον, αποφασίζεις να δημιουργήσεις μια βοηθητική μέθοδο που θα σε βοηθήσει σε αυτό.
Υλοποίησε τη (static) μέθοδο επέκτασης LogAnalysis.SubstringAfter(), που δέχεται ένα διαχωριστικό συμβολοσειράς και επιστρέφει την υποσυμβολοσειρά μετά το διαχωριστικό.
var log = "[INFO]: File Deleted.";
log.SubstringAfter(": "); // => returns "File Deleted."
Σε περαιτέρω έλεγχο, βλέπεις ότι το επίπεδο καταγραφής βρίσκεται πάντα ανάμεσα σε αγκύλες ([ και ]). Καθώς επίσης προβλέπεις ότι θα χρειαστεί να εξαγάγεις το επίπεδο καταγραφής κάποια στιγμή στο άμεσο μέλλον, αποφασίζεις να δημιουργήσεις μια άλλη βοηθητική μέθοδο που θα σε βοηθήσει σε αυτό.
Υλοποίησε τη (static) μέθοδο επέκτασης LogAnalysis.SubstringBetween(), που δέχεται δύο διαχωριστικά συμβολοσειράς και επιστρέφει την υποσυμβολοσειρά που βρίσκεται ανάμεσα στα δύο διαχωριστικά.
var log = "[INFO]: File Deleted.";
log.SubstringBetween("[", "]"); // => returns "INFO"
Υλοποίησε τη (static) μέθοδο επέκτασης LogAnalysis.Message() για να επιστρέφει το μήνυμα που περιέχεται σε μια καταγραφή.
var log = "[ERROR]: Missing ; on line 20.";
log.Message(); // => returns "Missing ; on line 20."
Υλοποίησε τη (static) μέθοδο επέκτασης LogAnalysis.LogLevel() για να επιστρέφει το επίπεδο καταγραφής μιας καταγραφής.
var log = "[ERROR]: Missing ; on line 20.";
log.LogLevel(); // => returns "ERROR"
Γράψου στο Exercism για να μάθεις και να κατακτήσεις C# με 62 έννοιες178 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.