LoginSignup
0
0

【Ruby】述語メソッドについて

Posted at

はじめに

Rubyにおける述語メソッドについて記していきます。
また、後半に述語メソッドの一部を紹介します。

述語メソッドとは

Ruby用語集 (Ruby 3.2 リファレンスマニュアル)で以下のように説明されています。

述語メソッド predicate method
返り値を真偽値として用いるためのメソッド。メソッド名の末尾に ? を付ける習慣がある。
true/false を返すとは限らず、真である場合に、true 以外のオブジェクトを返すことで、単なる真偽を越えた情報を与えるものもある。

「def xx?」の意味

Rubyで使われる記号の意味(正規表現の複雑な記号は除く) (Ruby 3.2 リファレンスマニュアル)で以下のように説明されています。

def xx?
この場合の「?」はメソッド名の一部分です。慣用的に、真偽値を返すタイプのメソッドを示すために使われます。

※しかし、こちらの記事でも紹介されていたが、xx?メソッドにも関わらず、true・false以外の値を返すメソッドも実在する。

String(文字列)クラス

メソッド名 説明
empty? 文字列が空 (つまり長さ 0) の時、真を返します。
include?(substr) 文字列中に部分文字列 substr が含まれていれば真を返します。
casecmp?(other) 大文字小文字の違いを無視し文字列を比較します。文字列が一致する場合には true を返し、一致しない場合には false を返します。
nil は文字列のエンコーディングが非互換の時に返されます。
start_with?(strs*) self の冒頭が strs のいずれかであるとき true を返します。
end_with?(*strs) self の末尾が strs のいずれかであるとき true を返します。
eql?(other) 文字列の内容が文字列 other の内容と等しいときに true を返します。等しくなければ false を返します。
※同一オブジェクトかの判定はObject#equalを使用。

Array(配列)クラス

メソッド名 説明
empty? 自身の要素の数が 0 の時に真を返します。そうでない場合に false を返します。
include?(val) 配列が val と == で等しい要素を持つ時に真を返します。
intersect?(other) other と共通の要素が少なくとも1個あれば true を、なければ false を返します。
none? ブロックを指定しない場合は、 配列のすべての要素が偽であれば真を返します。そうでなければ偽を返します。ブロックを指定した場合は、配列のすべての要素をブロックで評価した結果が、すべて偽であれば真を返します。そうでなければ偽を返します。要素の数が 0 である配列に対しては true を返します。
one? ブロックを指定しない場合は、 配列の要素のうちちょうど一つだけが真であれば、真を返します。そうでなければ偽を返します。ブロックを指定した場合は、配列の要素をブロックで評価した結果、一つの要素だけが真であれば真を返します。そうでなければ偽を返します。

Numeric(数値)クラス

メソッド名 説明
eql?(other) 自身と other のクラスが等しくかつ == メソッドで比較して等しい場合に true を返します。そうでない場合に false を返します。
finite? self の絶対値が有限値の場合に true を、そうでない場合に false を返します。
infinite? 常に nil を返します。自身が Float かComplex、もしくはそのサブクラスのインスタンスの場合は、self の絶対値が負の無限大の場合に-1を、正の無限大の場合に1を、有限値の場合に nil を返します。
integer? 自身が Integer かそのサブクラスのインスタンスの場合にtrue を返します。そうでない場合に false を返します。
negative? self が 0 未満の場合に true を返します。そうでない場合に false を返します。
nonzero? 自身がゼロの時 nil を返し、非ゼロの時 self を返します。
positive? self が 0 より大きい場合に true を返します。そうでない場合に false を返します。
zero? 自身がゼロの時、trueを返します。そうでない場合は false を返します。

Object(オブジェクト)クラス

メソッド名 説明
eql?(other) オブジェクトと other が等しければ真を返します。Hash で二つのキーが等しいかどうかを判定するのに使われます。
equal?(other) other が self 自身の時、真を返します。二つのオブジェクトが同一のものかどうか調べる時に使用します。
frozen? オブジェクトが凍結(内容の変更を禁止)されているときに真を返します。
instance_of?(klass) オブジェクトがクラス klass の直接のインスタンスである時真を返します。
instance_variable_defined?(var) インスタンス変数 var が定義されていたら真を返します。
is_a?(mod)
kind_of?(mod)
オブジェクトが指定されたクラス mod かそのサブクラスのインスタンスであるとき真を返します。
nil? レシーバが nil であれば真を返します。
respond_to?(name, include_all = false) オブジェクトがメソッド name を持つとき真を返します

参考文献

この記事は以下の情報を参考にして執筆しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0