處理輸入與輸出的函式由IO模組提供。
要把字串寫到標準輸出,請使用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接受 1 個引數,也就是一段會印出來當作輸入提示的字串。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函式。它應該歡迎新玩家,依序詢問角色的名字、職業和等級,並把角色卡以 map 的形式回傳。它還應該印出這張 map,並加上「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"}