Ein Typ ist ein generischer Typ, wenn er Werte jedes Typs über einen Typparameter enthalten kann.
Zum Beispiel hat dieser Typ Box den Typparameter a (geschrieben mit Kleinbuchstaben).
pub type Box(a) {
Box(a)
}
Der Typparameter a ist ein Platzhalter für jeden Typ, also kann Box mit Strings, Ganzzahlen oder jedem anderen Typ verwendet werden.
Box("Hello, Joe!") // The type is Box(String)
Box(42) // The type is Box(Int)
Ein Typ kann mehrere Typparameter haben, die du durch Kommas trennst.
pub type Pair(a, b) {
Pair(a, b)
}
Typparameter können auch in den Argumenten von Funktionen verwendet werden.
Diese Funktion nimmt einen Wert vom Typ a und ruft zweimal eine Funktion auf, die ein a nimmt und ein b zurückgibt.
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)
In dieser Übung schreibst du eine generische (/ magische!) TreasureChest, um ein paar Schätze zu lagern.
Definiere einen benutzerdefinierten Typ TreasureChest mit einer einzigen Variante.
Die Variante sollte einen zugeordneten String-Wert haben, der zum Speichern des Passworts der Schatztruhe verwendet wird.
Die Variante sollte außerdem einen zugeordneten generischen Wert haben, der zum Speichern des Schatzes verwendet wird. Dieser Wert ist generisch, damit der Schatz alles sein kann.
Definiere einen benutzerdefinierten Typ UnlockResult mit zwei Varianten.
Die erste Variante sollte Unlocked heißen und einen generischen Wert enthalten, der zum Speichern des Schatzes verwendet wird.
Die zweite Variante sollte WrongPassword heißen und keine Werte enthalten.
Diese Funktion sollte zwei Parameter entgegennehmen
TreasureChest
String (zum Ausprobieren eines Passworts)Diese Funktion sollte das übergebene Passwort mit dem String in der TreasureChest abgleichen.
Die Funktion sollte ein UnlockResult zurückgeben.
Wenn die Passwörter übereinstimmen, gib Unlocked mit dem generischen Wert aus der TreasureChest zurück (dem Schatz!).
Wenn die Passwörter nicht übereinstimmen, gib WrongPassword zurück.
Melde dich bei Exercism an, um Gleam mit 33 Konzepte122 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.