概要
Range#cover?(obj) -> bool
詳細
obj が範囲内に含まれている時に真を返却。
Range#include? ( member?, === ) と異なり <=> メソッドによる演算により範囲内かどうかを判定。
include? => 離散値
cover? => 連続値
ただし、数値は例外として include? も連続値を扱っている。
サンプルコード
require 'tbpgr_utils' require 'date' require 'time' def call_method_with_begin_rescue yield rescue => e e.message end bulk_puts_eval binding, <<-EOS (1.1..2.3).include?(1.1) (1.1..2.3).include?(1.555) (1.1..2.3).cover?(1.1) (1.1..2.3).cover?(1.555) ('b'..'d').include?('d') ('b'..'d').include?('ba') ('b'..'d').cover?('d') ('b'..'d').cover?('ba') (Date.new(2014,1,3)..Date.new(2014,1,5)).include?(Date.new(2014,1,5)) call_method_with_begin_rescue { (Time.new(2014,1,3)..Time.new(2014,1,5)).include?(Time.new(2014,1,4,10,10,10)) } (Date.new(2014,1,3)..Date.new(2014,1,5)).cover?(Date.new(2014,1,5)) (Time.new(2014,1,3)..Time.new(2014,1,5)).cover?(Time.new(2014,1,4,10,10,10)) EOS
出力
(1.1..2.3).include?(1.1) # => true (1.1..2.3).include?(1.555) # => true (1.1..2.3).cover?(1.1) # => true (1.1..2.3).cover?(1.555) # => true ('b'..'d').include?('d') # => true ('b'..'d').include?('ba') # => false ('b'..'d').cover?('d') # => true ('b'..'d').cover?('ba') # => true (Date.new(2014,1,3)..Date.new(2014,1,5)).include?(Date.new(2014,1,5)) # => true call_method_with_begin_rescue { (Time.new(2014,1,3)..Time.new(2014,1,5)).include?(Time.new(2014,1,4,10,10,10)) } # => "can't iterate from Time" (Date.new(2014,1,3)..Date.new(2014,1,5)).cover?(Date.new(2014,1,5)) # => true (Time.new(2014,1,3)..Time.new(2014,1,5)).cover?(Time.new(2014,1,4,10,10,10)) # => true