Функції для обробки введення та виведення надає модуль IO.
Щоб записати рядок тексту (англ. string) у стандартний вивід, скористаймося функцією IO.puts. IO.puts завжди додає новий рядок у кінці рядка тексту. Якщо така поведінка не потрібна, скористаймося функцією IO.write. Обидві функції в разі успіху повертають атом :ok.
IO.puts("Hi!")
# > Hi!
# => :ok
IO.puts стає в пригоді для запису рядків тексту, але не для чогось іншого. Якщо нам потрібен інструмент для налагодження, який дасть змогу записати будь-яке значення у стандартний вивід, скористаймося функцією IO.inspect. IO.inspect повертає передане йому значення без змін, тож його можна вставити в будь-якому місці коду. Він також приймає багато опцій, наприклад :label, які дають змогу відрізнити його від інших викликів IO.inspect.
Щоб прочитати рядок зі стандартного введення, скористаймося функцією IO.gets. IO.gets приймає один аргумент: рядок тексту, який буде надрукований як запрошення до введення. IO.gets не додає нового рядка після запрошення; додаймо його самі, якщо потрібно.
IO.gets("What's your name?\n")
# > What's your name?
# < Mary
# => "Mary\n"
Ми з друзями любимо грати в настільні рольові ігри, але помітили, що нових людей складно залучити до нашої групи. Їм часто важко дається створення персонажа. Вони не знають, з чого почати. Щоб допомогти новачкам, ми вирішили написати невеличку програму, яка проведе їх через цей процес.
Реалізуйте функцію RPG.CharacterSheet.welcome/0. Вона повинна вивести вітальне повідомлення й повернути :ok.
RPG.CharacterSheet.welcome()
# > Welcome! Let's fill out your character sheet together.
# => :ok
Реалізуйте функцію RPG.CharacterSheet.ask_name/0. Вона повинна вивести запитання, дочекатися відповіді й повернути відповідь без пробільних символів на початку й у кінці.
RPG.CharacterSheet.ask_name()
# > What is your character's name?
# < Mathilde
# => "Mathilde"
Реалізуйте функцію RPG.CharacterSheet.ask_class/0. Вона повинна вивести запитання, дочекатися відповіді й повернути відповідь без пробільних символів на початку й у кінці.
RPG.CharacterSheet.ask_class()
# > What is your character's class?
# < healer
# => "healer"
Реалізуйте функцію RPG.CharacterSheet.ask_level/0. Вона повинна вивести запитання, дочекатися відповіді й повернути відповідь як ціле число.
RPG.CharacterSheet.ask_level()
# > What is your character's level?
# < 2
# => 2
Реалізуйте функцію RPG.CharacterSheet.run/0. Вона повинна привітати нового гравця, запитати імʼя, клас і рівень персонажа, а також повернути аркуш персонажа у вигляді мапи. Крім того, вона повинна вивести мапу з підписом «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"}
Зареєструйтеся на Exercism, щоб вивчати й опановувати Elixir, а також 58 концепцій168 вправ та справжнє наставництво від людей, і все це безкоштовно.