self === obj -> bool
[permalink][rdoc][edit]-
始端と終端の中に obj があるとき、true を返します。そうでないとき、false を返します。
Range#=== は主に case 式での比較に用いられます。
p (0...50) === 79 #=> false p (60...80) === 79 #=> true case 79 when 0...60 then puts "low" when 60...80 then puts "medium" # => medium when 80..100 then puts "high" end
2.5 以前は、単純に Range#include? メソッドを内部で呼んでいました。
しかし、2.6 以降では、(文字列を除いて) Range#cover? と同様の処理をするように切り替わりました。
ただし、=== は、Range#cover? のように Range オブジェクトを引数にはとる設計はありません。
require 'date' p (Date.today - 100...Date.today + 100).include?(DateTime.now) #=> false p (Date.today - 100...Date.today + 100).cover?(DateTime.now) #=> true p (Date.today - 100...Date.today + 100) === DateTime.now #=> true # 2.5 以前は、=== は、include? と同じく比較できず false を返していました。
2.7 以降の === は、文字列も Range#cover? と同様の処理をするようになりました。
p ('a'..'z').include? 'at' #=> false p ('a'..'z').cover? 'at' #=> true p ('a'..'z') === 'at' #=> true # 2.6 以前は、=== は、include? と同じく比較できず false を返していました。
[SEE_ALSO] 制御構造/case
[SEE_ALSO] Range#include?, Range#cover?