【Ruby3.x】Proc::===()メソッドの使い方
===メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
===メソッドは、Procオブジェクトを実行するメソッドです。Procオブジェクトとは、Rubyのブロック(例えば、繰り返し処理などで渡されるコードのまとまり)を、それ自体をオブジェクトとして扱えるようにしたものです。この===メソッドは、Procオブジェクトのcallメソッドと全く同じ働きをします。
このメソッドが特に役立つのは、Rubyのcase文のwhen節で使用される場合です。通常、case文では、when節の値とcase式の値が==演算子で比較されます。しかし、when節にProcオブジェクトを置くと、case式の値がそのProcオブジェクトの===メソッドに引数として渡され、Procオブジェクトが実行されます。
これにより、when節でより柔軟で動的な条件判定を記述できるようになります。例えば、ある値が特定の範囲内にあるか、正規表現にマッチするか、あるいは特定の条件を満たすかを、Procオブジェクトの内部で定義し、それをcase文の条件として利用することができます。これは、単純な等価比較だけでは対応できない複雑な条件分岐を実現する際に非常に強力な機能です。したがって、===メソッドはProcオブジェクトの実行を担い、特にcase文において高度なパターンマッチングや柔軟な条件分岐を可能にする重要な役割を果たしています。
構文(syntax)
1positive_integer_checker = Proc.new { |value| value.is_a?(Integer) && value > 0 } 2is_positive_integer = positive_integer_checker === 5 3# => true
引数(parameters)
*rest
- rest: Procオブジェクトが実行される際に渡される、任意の数の引数
戻り値(return)
Object
Proc オブジェクト自身が Proc オブジェクトである場合に true を返します。それ以外の場合は false を返します。