Das Modul IO stellt Funktionen für die Ein- und Ausgabe bereit.
Um einen String auf die Standardausgabe zu schreiben, verwende IO.puts. IO.puts fügt immer eine neue Zeile am Ende des Strings hinzu. Wenn du dieses Verhalten nicht möchtest, verwende stattdessen IO.write. Beide Funktionen geben bei Erfolg das Atom :ok zurück.
IO.puts("Hi!")
# > Hi!
# => :ok
IO.puts ist nützlich, um Strings zu schreiben, aber nicht viel mehr. Wenn du ein Werkzeug zum Debuggen brauchst, mit dem du jeden Wert auf die Standardausgabe schreiben kannst, verwende stattdessen IO.inspect. IO.inspect gibt den Wert, der ihm übergeben wurde, unverändert zurück, sodass du es an jeder Stelle in deinem Code einfügen kannst. Es akzeptiert außerdem viele Optionen, zum Beispiel :label, mit denen du es von anderen Aufrufen von IO.inspect unterscheiden kannst.
Um eine Zeile aus der Standardeingabe zu lesen, verwende IO.gets. IO.gets akzeptiert ein Argument: einen String, den es als Eingabeaufforderung ausgibt. IO.gets fügt nach der Eingabeaufforderung keine neue Zeile hinzu; füge sie selbst hinzu, wenn du sie brauchst.
IO.gets("What's your name?\n")
# > What's your name?
# < Mary
# => "Mary\n"
Du und deine Freunde spielt gerne Pen-and-Paper-Rollenspiele, aber dir ist aufgefallen, dass es schwierig ist, neue Leute für eure Gruppe zu gewinnen. Sie haben oft Mühe mit der Charaktererstellung. Sie wissen nicht, wo sie anfangen sollen. Um neuen Spielerinnen und Spielern zu helfen, hast du beschlossen, ein kleines Programm zu schreiben, das sie durch den Prozess führt.
Implementiere die Funktion RPG.CharacterSheet.welcome/0. Sie sollte eine Willkommensnachricht ausgeben und :ok zurückgeben.
RPG.CharacterSheet.welcome()
# > Welcome! Let's fill out your character sheet together.
# => :ok
Implementiere die Funktion RPG.CharacterSheet.ask_name/0. Sie sollte eine Frage ausgeben, auf eine Antwort warten und die Antwort ohne führende und nachfolgende Leerzeichen zurückgeben.
RPG.CharacterSheet.ask_name()
# > What is your character's name?
# < Mathilde
# => "Mathilde"
Implementiere die Funktion RPG.CharacterSheet.ask_class/0. Sie sollte eine Frage ausgeben, auf eine Antwort warten und die Antwort ohne führende und nachfolgende Leerzeichen zurückgeben.
RPG.CharacterSheet.ask_class()
# > What is your character's class?
# < healer
# => "healer"
Implementiere die Funktion RPG.CharacterSheet.ask_level/0. Sie sollte eine Frage ausgeben, auf eine Antwort warten und die Antwort als Ganzzahl zurückgeben.
RPG.CharacterSheet.ask_level()
# > What is your character's level?
# < 2
# => 2
Implementiere die Funktion RPG.CharacterSheet.run/0. Sie sollte den neuen Spieler willkommen heißen, nach dem Namen, der Klasse und dem Level des Charakters fragen und den Charakterbogen als Map zurückgeben. Sie sollte außerdem die Map mit der Beschriftung „Your character“ ausgeben.
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"}
Melde dich bei Exercism an, um Elixir mit 58 Konzepte168 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.