Ένας τύπος είναι γενικός τύπος όταν μπορεί να περιέχει τιμές οποιουδήποτε τύπου χρησιμοποιώντας μια παράμετρο τύπου.
Για παράδειγμα, αυτός ο τύπος Box έχει την παράμετρο τύπου a (γραμμένη με πεζά γράμματα).
pub type Box(a) {
Box(a)
}
Η παράμετρος τύπου a είναι ένα σύμβολο θέσης για οποιονδήποτε τύπο, οπότε το Box μπορεί να χρησιμοποιηθεί με συμβολοσειρές, ακέραιους ή οποιονδήποτε άλλο τύπο.
Box("Hello, Joe!") // The type is Box(String)
Box(42) // The type is Box(Int)
Ένας τύπος μπορεί να έχει πολλαπλές παραμέτρους τύπου, χωρίζοντάς τες με κόμματα.
pub type Pair(a, b) {
Pair(a, b)
}
Οι παράμετροι τύπου μπορούν επίσης να χρησιμοποιηθούν στα ορίσματα των συναρτήσεων.
Αυτή η συνάρτηση παίρνει μια τιμή του τύπου a και καλεί δύο φορές μια συνάρτηση που παίρνει ένα a και επιστρέφει ένα b.
pub fn twice(value: a, f: fn(a) -> b) -> b {
f(value)
f(value)
}
// The type is fn(String, fn(String) -> Nil) -> Nil
twice("Hello, Joe!", io.println)
Σε αυτή την άσκηση θα γράψεις ένα γενικό (και μαγικό!) TreasureChest, για να αποθηκεύσεις κάποιον θησαυρό.
Όρισε έναν προσαρμοσμένο τύπο TreasureChest με μία μόνο παραλλαγή.
Η παραλλαγή θα πρέπει να έχει μια συσχετισμένη τιμή String, η οποία θα χρησιμοποιηθεί για την αποθήκευση του κωδικού πρόσβασης του σεντουκιού του θησαυρού.
Η παραλλαγή θα πρέπει επίσης να έχει μια συσχετισμένη γενική τιμή, η οποία θα χρησιμοποιηθεί για την αποθήκευση του θησαυρού. Αυτή η τιμή είναι γενική, ώστε ο θησαυρός να μπορεί να είναι οτιδήποτε.
Όρισε έναν προσαρμοσμένο τύπο UnlockResult με δύο παραλλαγές.
Η πρώτη παραλλαγή θα πρέπει να είναι Unlocked και να περιέχει μια γενική τιμή, η οποία θα χρησιμοποιηθεί για την αποθήκευση του θησαυρού.
Η δεύτερη παραλλαγή θα πρέπει να είναι WrongPassword, η οποία δεν περιέχει καμία τιμή.
Αυτή η συνάρτηση θα πρέπει να δέχεται δύο παραμέτρους
TreasureChest
String (για να δοκιμάσεις έναν κωδικό πρόσβασης)Αυτή η συνάρτηση θα πρέπει να ελέγχει τον κωδικό πρόσβασης που δίνεται ως προσπάθεια με το String μέσα στο TreasureChest.
Η συνάρτηση θα πρέπει να επιστρέφει ένα UnlockResult.
Αν οι κωδικοί πρόσβασης ταιριάζουν, τότε επέστρεψε Unlocked με τη γενική τιμή από το TreasureChest (τον θησαυρό!)
Αν οι κωδικοί πρόσβασης δεν ταιριάζουν, τότε επέστρεψε WrongPassword.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Gleam με 33 έννοιες122 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.