Tracks
/
Gleam
Gleam
/
Übungen
/
Bestenliste
Bestenliste

Bestenliste

Lernübung

Einführung

Typaliase

Typaliase

Ein Typalias kann in Gleam verwendet werden, um einem bereits existierenden Typ einen praktischen Namen zu geben, der sonst umständlich zu schreiben wäre.

pub type Headers =
  List(#(String, String))

pub fn html_headers() -> Headers {
  [
    #("content-type", "text/html"),
    #("x-frame-options", "DENY"),
  ]
}

Wenn man den Alias mit pub type schreibt, kann man ihn auch außerhalb des Moduls verwenden, in dem er definiert ist. Lässt man pub weg, ist der Alias privat und kann in anderen Modulen nicht verwendet werden.

Dicts

Dicts sind in Gleam die Datenstruktur, um Informationen in Schlüssel-Wert-Paaren zu speichern. In anderen Sprachen kennt man sie vielleicht auch als assoziative Arrays, Hashes oder Wörterbücher.

Für die Schlüssel und Werte eines Dicts kann jeder beliebige Typ verwendet werden, und die Reihenfolge der Einträge ist nicht garantiert, wenn man auf sie zugreift oder sie zurückgibt.

Mit Dicts arbeiten

Dicts werden mit Funktionen aus dem Modul gleam/dict erstellt und bearbeitet.

// Create an empty dict
let dict1 = dict.new()

// Create a dict with some values
let dict2 = dict.from_list([
  #("name", "Gleam"),
  #("colour", "Pink"),
])

// Add a value to a dict
let dict3 = dict.insert(dict2, "website", "https://gleam.run")

// Get a value from a dict
let name = dict.get(dict3, "name")
// -> Ok("Gleam")

Anleitung

In dieser Übung implementierst du eine Möglichkeit, die Bestenliste für das beliebteste Spiel in deiner örtlichen Spielhalle im Blick zu behalten.

Du sollst 5 Funktionen implementieren, die sich größtenteils darum drehen, ein Objekt zu bearbeiten, das die Bestenliste speichert.

1. Erstelle eine neue Bestenliste

Erstelle eine Funktion create_score_board, die ein Wörterbuch zurückgibt, das als Bestenliste dient. Die Schlüssel dieses Objekts sind die Namen der Spieler, die Werte sind ihre Punktzahlen. Zu Testzwecken sollst du direkt einen Eintrag in das Objekt aufnehmen. Dieser anfängliche Eintrag sollte aus "The Best Ever" als Spielernamen und 1_000_000 als Punktzahl bestehen.

create_score_board()
// returns an object with one initial entry

2. Füge Spieler zu einer Bestenliste hinzu

Um einen Spieler zur Bestenliste hinzuzufügen, definiere die Funktion add_player. Sie akzeptiert 3 Parameter:

  • Der erste Parameter ist die Bestenliste als Wörterbuch.
  • Der zweite Parameter ist der Name eines Spielers als String.
  • Der dritte Parameter ist die Punktzahl als Ganzzahl.

Die Funktion gibt das Wörterbuch mit dem neuen Spieler und seiner Punktzahl zurück.

3. Entferne Spieler aus einer Bestenliste

Wenn Spieler gegen die Regeln der Spielhalle verstoßen, werden sie manuell aus der Bestenliste entfernt. Definiere remove_player, die 2 Parameter entgegennimmt:

  • Der erste Parameter ist die Bestenliste als Wörterbuch.
  • Der zweite Parameter ist der Name des Spielers als String.

Diese Funktion sollte das Wörterbuch ohne den Spieler zurückgeben, der entfernt wurde.

Wenn der Spieler gar nicht auf der Bestenliste stand, sollte sich an der Bestenliste nichts ändern, sie sollte unverändert zurückgegeben werden.

4. Erhöhe die Punktzahl eines Spielers

Wenn ein Spieler in der Spielhalle ein weiteres Spiel beendet, wird eine bestimmte Anzahl Punkte zur bisherigen Punktzahl auf der Bestenliste addiert. Implementiere update_score, die 3 Parameter entgegennimmt:

  • Der erste Parameter ist die Bestenliste als Wörterbuch.
  • Der zweite Parameter ist der Name des Spielers, dessen Punktzahl erhöht werden soll.
  • Der dritte Parameter ist die Punktzahl, die du zur gespeicherten Punktzahl addieren möchtest.

Die Funktion sollte das Wörterbuch mit der aktualisierten Punktzahl zurückgeben.

Wenn der Spieler gar nicht auf der Bestenliste stand, sollte sich an der Bestenliste nichts ändern, sie sollte unverändert zurückgegeben werden.

5. Wende die Bonuspunkte für Montag an

Die Spielhalle führt montags eine separate Bestenliste. Am Ende des Tages bekommt jeder Spieler auf dieser Bestenliste 100 zusätzliche Punkte.

Implementiere die Funktion apply_monday_bonus, die eine Bestenliste entgegennimmt. Die Funktion gibt das Wörterbuch zurück, in dem für jeden Spieler auf dieser Bestenliste die Bonuspunkte hinzugefügt wurden.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Gleam Exercism

Bereit, mit Bestenliste zu starten?

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