[Ruby]範囲の判定

0
447
views

Rubyではその他多くの言語と同様、オブジェクトを比較すると式が展開され、評価された結果が返却されます。

等しい/等しくない

等しい

p (2 == 2)
true

等しくない

p (2 != 2)
false

TrueClass/FalseClass

ただし、Rubyで返される比較結果の値は “Boolean” 型ではありません。評価結果がtrueの場合は “TrueClass” が、falseの場合は “FalseClass” がそれぞれ返却されます。

p (2 == 2)
p (2 != 2)
TrueClass
FalseClass

以上/以下

記述ルール:不等号が先

Ruby で「以上/以下」を表現する場合には、不等号を先に書きます。イコール記号を先に書くとエラーになります。

p (2 =< 1)
syntax error, unexpected '=', expecting ')'
p (2 =< 1)
     ^

以上

p (2 <= 1)
false

以下

p (2 >= 1)
true

between?メソッド

オブジェクトが範囲内にあるかの判定には、"between?" メソッドが便利です。

p 10.between?(20, 22)
false

日付

"between?" メソッドは日付でも使えます。

require "date"

from_date = DateTime.parse('2012-01-01')
to_date = DateTime.parse('2012-12-31')

p DateTime.parse('2013-01-01').between?(from_date, to_date)
false

注意点

Rubyの条件文では nil と false 以外はすべて true として扱われます。