IO

IO in Elixir

1 Übung

Über IO

Funktionen für die Ein- und Ausgabe stellt das Modul IO bereit.

  • IO.puts/2 schreibt einen String in die Standardausgabe, gefolgt von einem Zeilenumbruch. Gibt :ok zurück.
  • IO.write/2 schreibt einen String in die Standardausgabe, ohne einen Zeilenumbruch anzuhängen. Gibt :ok zurück.
  • IO.gets/2 liest eine Zeile aus der Standardeingabe.
  • IO.inspect/2 schreibt irgendetwas in die Standardausgabe und akzeptiert nützliche Optionen wie :label. Gibt den übergebenen Wert unverändert zurück. Nützlich zum Debuggen.

Das String.Chars-Protokoll

Wenn du IO.puts/2 einen Wert übergibst, den die Funktion nicht ausgeben kann, siehst du einen Fehler vom Typ Protocol.UndefinedError.

IO.puts({:ok, 7})
# ** (Protocol.UndefinedError) protocol String.Chars not implemented for {:ok, 7} of type Tuple

In diesem Fall möchtest du vielleicht stattdessen IO.inspect/2 verwenden.

IO.inspect/2 zum Debuggen

IO.inspect/2 eignet sich perfekt zum Debuggen, weil es sein Argument unverändert zurückgibt, alles ausgeben kann und eine Option :label bietet.

"HELLO\n"
|> String.trim()
|> IO.inspect(label: "step 1")
|> String.downcase()
|> IO.inspect(label: "step 2")

# > step 1: "HELLO"
# > step 2: "hello"
# => "hello"

IO-Geräte

Das erste Argument all dieser Funktionen ist ein IO-Gerät, mit dem Standardwert :stdio (Standardeingabe/-ausgabe). Um in die Standardfehlerausgabe zu schreiben, verwendest du stattdessen :stderr. Ein IO-Gerät kann auch ein Prozess sein, zum Beispiel einer, den du mit File.open/2 erzeugst, womit du in eine Datei schreiben kannst.

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

Lerne IO