内容は 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
- Module: Kernel#print (Ruby 2.6.1)
- Module: Kernel#puts (Ruby 2.6.1)
- Module: Kernel#gets (Ruby 2.6.1)
- Module: Kernel#chomp (Ruby 2.6.1)
- Class: String#to_i (Ruby 2.6.1)
- Class: Date#new (Ruby 2.6.1)
- Class: Date#wday (Ruby 2.6.1)
- Class: Array#values_at (Ruby 2.6.1)
- Class: Array#first (Ruby 2.6.1)
- Class: Proc#yield (Ruby 2.6.1)
- An introduction to Ruby’s *Splat and double **Splat operators