Tracks
/
Gleam
Gleam
/
Übungen
/
Frühjahrsputz
Frühjahrsputz

Frühjahrsputz

Lernübung

Einführung

Let Assertions

Wenn wir in Gleam Pattern Matching auf einen Wert anwenden, müssen wir sicherstellen, dass die Muster jeden möglichen Wert des Typs abdecken, andernfalls kompiliert der Code nicht.

Diese Funktion sollte abgelehnt werden, weil sie den Fall, dass die Liste leer ist, nicht behandelt:

pub fn get_first_element_or_crash(items: List(e)) -> e {
  case items {
    [item, ..] -> item
  }
}

Meistens wollen wir in Gleam-Programmen jeden möglichen Fall behandeln, aber in manchen Programmen, etwa Prototypen oder kurzen Skripten, wollen wir uns vielleicht nur auf den Happy Path konzentrieren und keinen Code für andere Fälle schreiben. Hier kommt Gleams let assert ins Spiel.

Mit let assertions kann ein Muster nur auf einen Teil der möglichen Werte eines Typs passen, und wenn das Muster nicht auf einen Wert passt, stürzt das Programm ab. Mit let assert können wir die obige Funktion so schreiben:

pub fn get_first_element_or_crash(items: List(e)) -> e {
  let assert [item, ..] = items
  item
}

Gleam-Bibliotheken sollten niemals let assertions verwenden, weil sie das Programm zum Absturz bringen können. Stattdessen sollten sie den Typ Result verwenden und es den Entwicklerinnen und Entwicklern der Anwendung überlassen, wie sie mit Fehlern umgehen.

Anleitung

Mika, die Veranstaltungsorganisatorin, wurde bei der Arbeit befördert, und im Rahmen ihrer neuen Aufgaben ist sie jetzt für die Veranstaltungsdatenbank zuständig. Ihr ist schnell aufgefallen, dass viele Daten so gespeichert sind, dass man nur schwer damit arbeiten kann. Deshalb tut ihr euch zusammen, um die Daten mit einem einmaligen Skript aufzuräumen.

Da das Skript nur ein einziges Mal ausgeführt wird und du dir bei der Struktur der Daten sicher bist, findest du, dass dies eine gute Gelegenheit ist, Gleams let assertions einzusetzen.

1. Fehler extrahieren

Jede vergangene Veranstaltung hat eine Liste von Problemen, die während der Veranstaltung aufgetreten sind. Diese wurden als Results gespeichert, sind aber immer die Error-Variante.

Implementiere die Funktion extract_error, die ein Result entgegennimmt, das immer ein Error sein soll, und den darin enthaltenen Fehlerwert zurückgibt.

extract_error(Error("Not enough coffee"))
// -> "Not enough coffee"

2. Team-Präfix entfernen

Teamnamen wurde das Wort „Team “ vorangestellt, aber das ist nicht nötig. Implementiere die Funktion remove_team_prefix, um das Präfix aus einem Teamnamen zu entfernen.

remove_team_prefix("Team Turtle")
// -> "Turtle"

3. Region und Team aufteilen

Jede Veranstaltung wird von einem Team durchgeführt, und jedes Team gehört zu einer Region. In der Datenbank werden beide in einem einzigen String gespeichert, getrennt durch ein Komma.

Implementiere die Funktion split_region_and_team, um den String in ein Tupel aus zwei Strings aufzuteilen, einen für die Region und einen für das Team. Das Präfix „Team “ sollte aus dem Teamnamen entfernt werden.

split_region_and_team("East,Team Orange")
// -> #("East", "Orange")
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Gleam Exercism

Bereit, mit Frühjahrsputz zu starten?

Melde dich bei Exercism an, um Gleam mit 33 Konzepte122 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.