As funções para lidar com entrada e saída são fornecidas pelo módulo IO.
Para escrever uma string na saída padrão, usa IO.puts. O IO.puts acrescenta sempre uma nova linha no fim da string. Se não quiseres esse comportamento, usa antes o IO.write. Ambas as funções devolvem o átomo :ok se forem bem-sucedidas.
IO.puts("Hi!")
# > Hi!
# => :ok
O IO.puts é útil para escrever strings, mas pouco mais. Se precisares de uma ferramenta de depuração que te permita escrever qualquer valor na saída padrão, usa antes o IO.inspect. O IO.inspect devolve o valor que lhe foi passado, sem alterações, por isso pode ser inserido em qualquer ponto do teu código. Também aceita muitas opções, por exemplo :label, que te permitem distingui-lo de outras chamadas a IO.inspect.
Para ler uma linha da entrada padrão, usa IO.gets. O IO.gets aceita um argumento: uma string que será impressa como um pedido de entrada. O IO.gets não acrescenta uma nova linha depois do pedido; inclui-a tu próprio se precisares.
IO.gets("What's your name?\n")
# > What's your name?
# < Mary
# => "Mary\n"
Tu e os teus amigos adoram jogar jogos de interpretação de papel e lápis, mas reparaste que é difícil convencer pessoas novas a juntar-se ao teu grupo. Muitas vezes têm dificuldade em criar a personagem. Não sabem por onde começar. Para ajudar os novos jogadores, decidiste escrever um pequeno programa que os guie ao longo do processo.
Implementa a função RPG.CharacterSheet.welcome/0. Deve imprimir uma mensagem de boas-vindas e devolver :ok.
RPG.CharacterSheet.welcome()
# > Welcome! Let's fill out your character sheet together.
# => :ok
Implementa a função RPG.CharacterSheet.ask_name/0. Deve imprimir uma pergunta, esperar por uma resposta e devolver a resposta sem espaços em branco no início e no fim.
RPG.CharacterSheet.ask_name()
# > What is your character's name?
# < Mathilde
# => "Mathilde"
Implementa a função RPG.CharacterSheet.ask_class/0. Deve imprimir uma pergunta, esperar por uma resposta e devolver a resposta sem espaços em branco no início e no fim.
RPG.CharacterSheet.ask_class()
# > What is your character's class?
# < healer
# => "healer"
Implementa a função RPG.CharacterSheet.ask_level/0. Deve imprimir uma pergunta, esperar por uma resposta e devolver a resposta como um número inteiro.
RPG.CharacterSheet.ask_level()
# > What is your character's level?
# < 2
# => 2
Implementa a função RPG.CharacterSheet.run/0. Deve dar as boas-vindas ao novo jogador, perguntar o nome, a classe e o nível da personagem e devolver a ficha da personagem como um mapa. Deve também imprimir o mapa com a etiqueta "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"}
Inscreve-te no Exercism para aprenderes e dominares Elixir com 58 conceitos168 exercícios, e mentoria humana real, tudo grátis.