[Ruby]値があるか確認するメソッド、cover?とinclude?の違い

何が違うの?

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が返っている。

タイトルとURLをコピーしました