ブログ

読んで思い出す。忘れるために書く

年月日を訊いて曜日を調べるプログラム

内容は Rubyで曜日を取得するプログラムの書き方【メンターが回答】 | TechAcademyマガジン のもの

やることは:

  • 年を訊く
  • 月を訊く
  • 日を訊く
  • その情報をもとに、入力された年月日の曜日を表示する

というもの

これをいま知ってることを含めて書いたらどうなるだろうと思ったので、自己課題として書いてみる

Before:

puts "年を入力してください"
year = gets.to_i
puts "月を入力してください"
month = gets.to_i
puts "日を入力してください"
day = gets.to_i

t = Time.new(year, month, day)
week = %w(日 月 火 水 木 金 土 日)[t.wday]
puts "#{year}#{month}#{day}日は#{week}曜日です"

After:

require 'date'

def ask
  print yield
  gets.chomp.to_i
end

def ask_date
  puts '指定された年月日の曜日を調べます。'
  [
    ask { '年を入力してください: ' },
    ask { '月を入力してください: ' },
    ask { '日を入力してください: ' }
  ]
end

def print_date_with_weekday(year, month, day)
  wday = Date.new(year, month, day).wday
  week_day = %w[日 月 火 水 木 金 土 日].values_at(wday).first

  puts "#{year}#{month}#{day}日は#{week_day}曜日です"
end

print_date_with_weekday(*ask_date)

Links