Tracks
/
Elixir
Elixir
/
Übungen
/
Need for Speed
Need for Speed

Need for Speed

Lernübung

Einführung

Alias

Um Code zwischen verschiedenen Elixir-Modulen innerhalb desselben Projekts zu teilen, musst du auf das externe Modul mit seinem vollständigen Namen verweisen. Aber was, wenn dieser Name zu lang oder verwirrend ist?

Die spezielle Form alias ermöglicht es dir, den Namen zu verkürzen oder zu ändern, mit dem du auf ein externes Modul verweist. Wenn sie ohne Argumente verwendet wird, kürzt sie den Modulnamen auf sein letztes Segment, z. B. wird MyApp.Logger.Settings zu Settings. Ein benutzerdefinierter Name kann mit der Option :as angegeben werden.

Normalerweise werden Aliase am Anfang der Moduldefinition hinzugefügt.

defmodule Square do
  alias Integer, as: I

  def area(a), do: I.pow(a, 2)
end

Import

Die spezielle Form import ermöglicht es dir, Funktionen aus einem externen Modul zu verwenden, ohne den Namen des Moduls anzugeben.

Das Importieren eines ganzen externen Moduls kann zu Konflikten mit vorhandenen lokalen Funktionen führen. Um dies zu vermeiden, stehen zwei Optionen zur Verfügung: :except und :only. Beide erwarten eine Keyword-Liste, bei der der Schlüssel der Funktionsname und der Wert die Arity der Funktion ist.

Normalerweise werden Importe am Anfang der Moduldefinition hinzugefügt.

defmodule Square do
  import Integer, only: [pow: 2]

  def area(a), do: pow(a, 2)
end

Anleitung

Das ferngesteuerte Auto, das du dir vor Kurzem gekauft hast, ist zu einem ganz neuen Hobby geworden. Du hast angefangen, Rennen mit ferngesteuerten Autos zu organisieren.

Du warst fast fertig mit einem Programm, mit dem sich Rennsimulationen durchführen lassen, als deine Katze auf deine Tastatur sprang und ein paar Zeilen Code löschte. Jetzt lässt sich dein Programm nicht mehr kompilieren...

1. Behebe den Kompilierungsfehler Race.__struct__/0 is undefined

Füge einen Alias hinzu, damit du auf das Modul NeedForSpeed.Race mit dem kürzeren Namen Race verweisen kannst.

2. Behebe den Kompilierungsfehler Car.__struct__/0 is undefined

Füge einen Alias hinzu, damit du auf das Modul NeedForSpeed.RemoteControlCar mit dem kürzeren Namen Car verweisen kannst.

3. Behebe den Kompilierungsfehler undefined function puts/1

Die Funktion puts/1 stammt aus dem Modul IO. Importiere es, damit du sie verwenden kannst, ohne das Modul anzugeben.

4. Behebe den Kompilierungsfehler undefined function default_color/0

Die Funktionen default_color/0, red/0, cyan/0 und green/0 stammen alle aus dem Modul IO.ANSI. Du hast vor, Unterstützung für weitere Autofarben hinzuzufügen, deshalb möchtest du das ganze Modul importieren. Leider kollidiert die Funktion color/1 aus dem Modul IO.ANSI mit einer deiner lokalen Funktionen. Importiere das gesamte Modul IO.ANSI, außer dieser einen Funktion.

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

Bereit, mit Need for Speed zu starten?

Melde dich bei Exercism an, um Elixir mit 58 Konzepte168 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.