IO

IO σε Elixir

1 άσκηση

Σχετικά με την έννοια IO

Οι συναρτήσεις για τη διαχείριση εισόδου και εξόδου παρέχονται από το IO module.

  • Η IO.puts/2 γράφει μια συμβολοσειρά στην τυπική έξοδο, ακολουθούμενη από χαρακτήρα νέας γραμμής. Επιστρέφει :ok.
  • Η IO.write/2 γράφει μια συμβολοσειρά στην τυπική έξοδο, χωρίς να προσθέτει χαρακτήρα νέας γραμμής. Επιστρέφει :ok.
  • Η IO.gets/2 διαβάζει μια γραμμή από την τυπική είσοδο.
  • Η IO.inspect/2 γράφει οτιδήποτε στην τυπική έξοδο και δέχεται χρήσιμες επιλογές, όπως το :label. Επιστρέφει αμετάβλητη την τιμή που της δόθηκε. Χρήσιμη για debugging.

Το πρωτόκολλο String.Chars

Αν προσπαθήσεις να περάσεις στη IO.puts/2 μια τιμή που δεν μπορεί να εκτυπώσει, θα δεις ένα σφάλμα Protocol.UndefinedError.

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

Όταν συμβεί αυτό, μπορεί να θέλεις να χρησιμοποιήσεις αντ' αυτού τη IO.inspect/2.

Η IO.inspect/2 για debugging

Η IO.inspect/2 είναι ιδανική για debugging, γιατί επιστρέφει το όρισμά της αμετάβλητο, μπορεί να εκτυπώσει οτιδήποτε και προσφέρει μια επιλογή :label.

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

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

Συσκευές IO

Το πρώτο όρισμα σε όλες αυτές τις συναρτήσεις είναι μια συσκευή IO, με προεπιλεγμένη τιμή το :stdio (τυπική είσοδος/έξοδος). Για να γράψεις στη συσκευή τυπικού σφάλματος, χρησιμοποίησε αντ' αυτού το :stderr. Μια συσκευή IO μπορεί επίσης να είναι μια διεργασία, για παράδειγμα μία που δημιουργήθηκε καλώντας τη File.open/2, η οποία θα επέτρεπε την εγγραφή σε ένα αρχείο.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια IO