何が違うの?
cover?メソッドとinclude?メソッドはともに、引数で指定した値が範囲内にあるかを確認するメソッドである。
原則としてこの二つのメソッドの大きな違いは、、
cover?:連続値
include?:離散値(連続していない値)
を扱う。
*ただし数値は例外的にinclude?も連続値を扱うことに注意。
またcover?は、<=> メソッドによる演算によって範囲内かどうかを判定する。
数値
(10..30).cover?(15) => true
(10..30).include?(15) => true
数値以外
("b".."d").cover?("ba") => true
("b".."d").include?("ba") => false
("a".."z").cover?("lotte") => true
("a".."z").include?("lotte") => false
cover?は<=>
メソッドによる演算により、範囲内に”ba”、”lotte”があるかを判定するのでtrueが返る。
一方include?は、“ba”、”lotte”そのものが範囲内にあるかを判定するのでfalseが返っている。