IO

IO ebben a kurzusban: Elixir

1 feladat

A(z) IO fogalomról

A bemenet és kimenet kezeléséhez szükséges függvényeket az IO modul biztosítja.

  • Az IO.puts/2 egy stringet ír a szabványos kimenetre, majd egy sortörést fűz hozzá. :ok-t ad vissza.
  • Az IO.write/2 egy stringet ír a szabványos kimenetre, sortörés hozzáadása nélkül. :ok-t ad vissza.
  • Az IO.gets/2 beolvas egy sort a szabványos bemenetről.
  • Az IO.inspect/2 bármit kiír a szabványos kimenetre, és hasznos beállításokat fogad el, például a :label-t. Változatlanul adja vissza a kapott értéket. Debugoláshoz hasznos.

A String.Chars protokoll

Ha olyan értéket próbálsz átadni az IO.puts/2 függvénynek, amit az nem tud kiírni, Protocol.UndefinedError hibát kapsz.

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

Ilyenkor érdemes lehet inkább az IO.inspect/2 függvényt használni.

IO.inspect/2 a debugoláshoz

Az IO.inspect/2 tökéletes a debugoláshoz, mert változatlanul adja vissza az argumentumát, bármit ki tud írni, és kínál egy :label beállítást.

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

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

IO-eszközök

Ezeknek a függvényeknek az első argumentuma egy IO-eszköz, alapértelmezés szerint :stdio (szabványos bemenet/kimenet). A szabványos hibakimenetre való íráshoz használd helyette a :stderr-t. Egy IO-eszköz lehet egy folyamat is, például amit a File.open/2 meghívásával hozol létre, így akár fájlba is írhatsz.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) IO fogalmat