コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Rubyのbetween?は大なり小なりをしているだけなのでいろいろ比較できる

ActiveSupportの拡張かと思ったらRubyの実装で、原理を知らなかったのでメモ

環境

$ ruby -v
ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-darwin18]

出典

比較演算子 <=> をもとに self が min と max の範囲内(min, max を含みます)にあるかを判断します。以下のコードと同じです。
self >= min and self <= max
- module Comparable (Ruby 2.6.0)

数字はもちろん

3.between?(1,10)
# => true

文字列もできる

"e".between?("a","f")
# => true
"e".between?("a","c")
# => false

日付の文字列もできるが、タイムゾーンとかの考慮が少ないためあまりおすすめはしない

"2019-1-20".between?("2018-1-10","2019-2-10")
# => true

参考リンク