質問「Ruby - 【Ruby/Rails】西暦なしの日付同士の比較&年1回のメッセージの表示/再表示|teratail」を見掛けて コードの部分だけ書きたくなったので 頭の体操
「ああ~ Lambda が使いたいんじゃ~」というお話
- 手順をどうするか考えて
- 実際の処理を lambda に閉じ込めて
- そしたら また適用順番を考えて
- 実際に処理を走らせる
pp current_day = Date.new(2018, 11, 1) # => #<Date: 2018-11-01 ((2458424j,0s,0n),+0s,2299161j)> pp to_comparing_day = Date.new(2018, 11, 15) # => #<Date: 2018-11-15 ((2458438j,0s,0n),+0s,2299161j)> def compare_month_day(date_a, date_b) extract_month_day = ->(date) { [date.month, date.day] } is_same_month_and_day = ->(date_array) { a, b = date_array; a.eql?(b) } month_and_day = [date_a, date_b].map(&extract_month_day) is_same_month_and_day.call(month_and_day) end pp compare_month_day(current_day, to_comparing_day) # => false pp compare_month_day(current_day, Date.new(2018, 11, 1)) # => true