ブログ

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

Date 型情報から月と日のみで比較する (yield_self)

gouf.hatenablog.com

やってることは上の過去記事とおなじ

lambda の定義をなくして、 yield_self を使うように書き換えた

こういうときが yield_self を使う場面なのだろか

require 'date'

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)
  [date_a, date_b].map { |date| [date.month, date.day] }
                  .tap { |a, b| p a, b } # => [11, 1], [11, 15] : for debug
                  .yield_self { |a, b| a.eql?(b) } # => false
end

pp compare_month_day(current_day, to_comparing_day)
# => false
pp compare_month_day(current_day, Date.new(2018, 11, 1))
# => true

Links