El módulo IO proporciona las funciones para manejar la entrada y la salida.
Para escribir una string en la salida estándar, usa IO.puts. IO.puts siempre agrega una nueva línea al final de la string. Si no quieres ese comportamiento, usa IO.write en su lugar. Ambas funciones devuelven el átomo :ok si tienen éxito.
IO.puts("Hi!")
# > Hi!
# => :ok
IO.puts es útil para escribir strings, pero no mucho más. Si necesitas una herramienta para depurar que te permita escribir cualquier valor en la salida estándar, usa IO.inspect en su lugar. IO.inspect devuelve el valor que recibió, sin cambios, así que puedes insertarlo en cualquier punto de tu código. También acepta muchas opciones, por ejemplo :label, que te permiten distinguirlo de otras llamadas a IO.inspect.
Para leer una línea de la entrada estándar, usa IO.gets. IO.gets acepta un argumento: una string que imprimirá como indicador para la entrada. IO.gets no agrega una nueva línea después del indicador, inclúyela si la necesitas.
IO.gets("What's your name?\n")
# > What's your name?
# < Mary
# => "Mary\n"
A ti y a tus amigos les encanta jugar juegos de rol de lápiz y papel, pero te diste cuenta de que es difícil lograr que gente nueva se una a tu grupo. A menudo les cuesta crear su personaje. No saben por dónde empezar. Para ayudar a los nuevos jugadores, decidiste escribir un pequeño programa que los guíe en el proceso.
Implementa la función RPG.CharacterSheet.welcome/0. Debe imprimir un mensaje de bienvenida y devolver :ok.
RPG.CharacterSheet.welcome()
# > Welcome! Let's fill out your character sheet together.
# => :ok
Implementa la función RPG.CharacterSheet.ask_name/0. Debe imprimir una pregunta, esperar una respuesta y devolver la respuesta sin espacios en blanco al principio ni al final.
RPG.CharacterSheet.ask_name()
# > What is your character's name?
# < Mathilde
# => "Mathilde"
Implementa la función RPG.CharacterSheet.ask_class/0. Debe imprimir una pregunta, esperar una respuesta y devolver la respuesta sin espacios en blanco al principio ni al final.
RPG.CharacterSheet.ask_class()
# > What is your character's class?
# < healer
# => "healer"
Implementa la función RPG.CharacterSheet.ask_level/0. Debe imprimir una pregunta, esperar una respuesta y devolver la respuesta como un número entero.
RPG.CharacterSheet.ask_level()
# > What is your character's level?
# < 2
# => 2
Implementa la función RPG.CharacterSheet.run/0. Debe darle la bienvenida al nuevo jugador, preguntar el nombre, la clase y el nivel del personaje, y devolver la hoja de personaje como un mapa. También debe imprimir el mapa con la 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"}
Regístrate en Exercism para aprender y dominar Elixir con 58 conceptos168 ejercicios y mentoría humana real, todo gratis.