self === obj -> bool
[permalink][rdoc][edit]cover?(obj) -> bool
-
obj が範囲内に含まれている時に真を返します。
Range#=== は主に case 式での比較に用いられます。
Range#include? と異なり <=> メソッドによる演算により範囲内かどうかを判定します。 Range#include? は原則として離散値を扱い、 Range#cover? は連続値を扱います。(数値については、例外として Range#include? も連続的に扱います。)
Range#exclude_end?がfalseなら「begin <= obj <= end」を、 trueなら「begin <= obj < end」を意味します。
引数がRangeオブジェクトの場合、引数の範囲がselfの範囲に含まれる時にtrueを返します。
「(a..b).cover?(c...d)」のように終端を含まないRangeオブジェクトが引数に渡されており、「a <= c && b < d」を満たし、cが数値ではない(つまり引数のRangeの終端を求めるためにsuccメソッドの呼び出しが必要な)場合、パフォーマンスの問題が起きる可能性があります。
p ('aaaaa'..'zzzzy').cover?('aaaaa'...'zzzzz') # => true
- [PARAM] obj:
- 比較対象のオブジェクトを指定します。
(1.1..2.3).include?(1.0) # => false (1.1..2.3).include?(1.1) # => true (1.1..2.3).include?(1.555) # => true (1.1..2.3).cover?(1.0) # => false (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 (Time.new(2014,1,3)..Time.new(2014,1,5)).include?(Time.new(2014,1,4,10,10,10)) # => true (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
(1..5).cover?(2..3) #=> true (1..5).cover?(0..6) #=> false (1..5).cover?(1...6) #=> true
[SEE_ALSO] 制御構造/case
[SEE_ALSO] Range#include?