O módulo IO fornece funções para lidar com entrada e saída.
Para escrever uma string na saída padrão, use IO.puts. IO.puts sempre adiciona uma nova linha no final da string. Se você não quiser esse comportamento, use IO.write. As duas funções retornam o átomo :ok se derem certo.
IO.puts("Hi!")
# > Hi!
# => :ok
IO.puts é útil para escrever strings, mas não serve para muito mais que isso. Se você precisar de uma ferramenta de depuração que permita escrever qualquer valor na saída padrão, use IO.inspect. IO.inspect retorna o valor que recebeu sem alterações, então dá para inseri-lo em qualquer ponto do seu code. Ele também aceita muitas opções, por exemplo :label, que permitem distingui-lo de outras chamadas de IO.inspect.
Para ler uma linha da entrada padrão, use IO.gets. IO.gets aceita um argumento: uma string que será impressa como prompt para a entrada. IO.gets não adiciona uma nova linha depois do prompt. Se precisar, inclua a nova linha.
IO.gets("What's your name?\n")
# > What's your name?
# < Mary
# => "Mary\n"
Você e seus amigos adoram jogar RPG de mesa, mas percebeu que é difícil fazer pessoas novas entrarem no grupo. Elas muitas vezes travam na criação de personagens. Não sabem por onde começar. Para ajudar quem está chegando agora, você decidiu escrever um pequeno programa que oriente essas pessoas pelo processo.
Implemente a função RPG.CharacterSheet.welcome/0. Ela deve imprimir uma mensagem de boas-vindas e retornar :ok.
RPG.CharacterSheet.welcome()
# > Welcome! Let's fill out your character sheet together.
# => :ok
Implemente a função RPG.CharacterSheet.ask_name/0. Ela deve imprimir uma pergunta, esperar por uma resposta e retornar a resposta sem os espaços em branco no início e no fim.
RPG.CharacterSheet.ask_name()
# > What is your character's name?
# < Mathilde
# => "Mathilde"
Implemente a função RPG.CharacterSheet.ask_class/0. Ela deve imprimir uma pergunta, esperar por uma resposta e retornar a resposta sem os espaços em branco no início e no fim.
RPG.CharacterSheet.ask_class()
# > What is your character's class?
# < healer
# => "healer"
Implemente a função RPG.CharacterSheet.ask_level/0. Ela deve imprimir uma pergunta, esperar por uma resposta e retornar a resposta como um número inteiro.
RPG.CharacterSheet.ask_level()
# > What is your character's level?
# < 2
# => 2
Implemente a função RPG.CharacterSheet.run/0. Ela deve dar boas-vindas a quem está começando, perguntar o nome, a classe e o nível do personagem e retornar a ficha do personagem como um mapa. Ela também deve imprimir o mapa com o rótulo "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"}
Crie sua conta no Exercism para aprender e dominar Elixir com 58 conceitos168 exercícios e mentoria humana de verdade, tudo de graça.