وحدة 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 وسيطًا واحدًا: سلسلة نصية تطبعها كرسالة تطلب الإدخال. لا تضيف 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 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.