ماژول IO توابعی برای مدیریت ورودی و خروجی فراهم میکند.
برای نوشتن یک رشته در خروجی استاندارد، از IO.puts استفاده کنید. IO.puts همیشه یک خط جدید در انتهای رشته اضافه میکند. اگر این رفتار را نمیخواهید، به جای آن از IO.write استفاده کنید. هر دو تابع در صورت موفقیت، اتم :ok را برمیگردانند.
IO.puts("Hi!")
# > Hi!
# => :ok
IO.puts برای نوشتن رشتهها مفید است، اما کاربرد دیگری ندارد. اگر به ابزاری برای Debug نیاز دارید که به شما اجازه دهد هر مقداری را در خروجی استاندارد بنویسید، به جای آن از 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"}