Le funzioni per gestire l'input e l'output sono fornite dal modulo IO.
Per scrivere una stringa sullo standard output, usa IO.puts. IO.puts aggiunge sempre una nuova riga alla fine della stringa. Se non vuoi questo comportamento, usa invece IO.write. Entrambe le funzioni restituiscono l'atomo :ok se hanno successo.
IO.puts("Hi!")
# > Hi!
# => :ok
IO.puts è utile per scrivere stringhe, ma non molto altro. Se ti serve uno strumento di debug che ti permetta di scrivere qualsiasi valore sullo standard output, usa invece IO.inspect. IO.inspect restituisce il valore che gli è stato passato, invariato, quindi può essere inserito in qualsiasi punto del codice. Accetta anche molte opzioni, ad esempio :label, che permettono di distinguerlo dalle altre chiamate a IO.inspect.
Per leggere una riga dallo standard input, usa IO.gets. IO.gets accetta un solo argomento: una stringa che stamperà come richiesta di input. IO.gets non aggiunge una nuova riga dopo la richiesta, quindi aggiungila tu se ti serve.
IO.gets("What's your name?\n")
# > What's your name?
# < Mary
# => "Mary\n"
Tu e i tuoi amici adorate giocare ai giochi di ruolo con carta e penna, ma hai notato che è difficile far entrare nuove persone nel tuo gruppo. Spesso fanno fatica con la creazione del personaggio. Non sanno da dove iniziare. Per aiutare i nuovi giocatori, hai deciso di scrivere un piccolo programma che li guidi attraverso il processo.
Implementa la funzione RPG.CharacterSheet.welcome/0. Dovrebbe stampare un messaggio di benvenuto e restituire :ok.
RPG.CharacterSheet.welcome()
# > Welcome! Let's fill out your character sheet together.
# => :ok
Implementa la funzione RPG.CharacterSheet.ask_name/0. Dovrebbe stampare una domanda, attendere una risposta e restituire la risposta senza gli spazi bianchi all'inizio e alla fine.
RPG.CharacterSheet.ask_name()
# > What is your character's name?
# < Mathilde
# => "Mathilde"
Implementa la funzione RPG.CharacterSheet.ask_class/0. Dovrebbe stampare una domanda, attendere una risposta e restituire la risposta senza gli spazi bianchi all'inizio e alla fine.
RPG.CharacterSheet.ask_class()
# > What is your character's class?
# < healer
# => "healer"
Implementa la funzione RPG.CharacterSheet.ask_level/0. Dovrebbe stampare una domanda, attendere una risposta e restituire la risposta come numero intero.
RPG.CharacterSheet.ask_level()
# > What is your character's level?
# < 2
# => 2
Implementa la funzione RPG.CharacterSheet.run/0. Dovrebbe dare il benvenuto al nuovo giocatore, chiedere il nome, la classe e il livello del personaggio e restituire la scheda del personaggio come mappa. Dovrebbe anche stampare la mappa con l'etichetta "Your character".
RPG.CharacterSheet.run()
# > Welcome! Let's fill out your character sheet together.
# > What is your character's name?
# < Mathilde
# > What is your character's class?
# < healer
# > What is your character's level?
# < 2
# > Your character: %{class: "healer", level: 2, name: "Mathilde"}
# => %{class: "healer", level: 2, name: "Mathilde"}
Iscriviti a Exercism per imparare e padroneggiare Elixir con 58 concetti168 esercizi e il mentoring di persone reali, tutto gratis.