IO

IO en Elixir

1 exercice

À propos de IO

Les fonctions de gestion des entrées et des sorties sont fournies par le module IO.

  • IO.puts/2 écrit une string sur la sortie standard, suivie d'un retour à la ligne. Renvoie :ok.
  • IO.write/2 écrit une string sur la sortie standard, sans ajouter de retour à la ligne. Renvoie :ok.
  • IO.gets/2 lit une ligne sur l'entrée standard.
  • IO.inspect/2 écrit n'importe quoi sur la sortie standard et accepte des options utiles comme :label. Renvoie la valeur qu'on lui a passée, sans la modifier. Utile pour le débogage.

Le protocole String.Chars

Si tu essaies de passer à IO.puts/2 une valeur qu'il ne peut pas afficher, tu obtiendras une erreur Protocol.UndefinedError.

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

Dans ce cas, tu peux utiliser IO.inspect/2 à la place.

IO.inspect/2 pour le débogage

IO.inspect/2 est parfait pour le débogage, car il renvoie son argument sans le modifier, il peut afficher n'importe quoi et il propose une option :label.

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

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

Les périphériques d'E/S

Le premier argument de toutes ces fonctions est un périphérique d'E/S, dont la valeur par défaut est :stdio (l'entrée/sortie standard). Pour écrire sur la sortie d'erreur standard, utilise plutôt :stderr. Un périphérique d'E/S peut aussi être un processus, par exemple celui créé en appelant File.open/2, ce qui permettrait d'écrire dans un fichier.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends IO