【Ruby3.x】Proc::==()メソッドの使い方
==メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
==メソッドは、二つのProcオブジェクトが同等であるかどうかを判定するメソッドです。
このメソッドは、自身と引数で渡されたProcオブジェクトが、同じソースコードから生成され、かつ同じ定義コンテキスト(そのProcオブジェクトが定義された時点でのスコープや、そのスコープ内で利用可能なローカル変数などの外部環境)を共有している場合にtrueを返します。
具体的に言えば、たとえメモリ上では別々のオブジェクトとして存在していても、実行する処理内容が全く同じで、さらにその処理が参照する外部の変数などの状態も同じであれば、==メソッドはそれらを同等であると判断します。これは、オブジェクトそのものがメモリ上で完全に同一であるかどうかを判定するequal?メソッドとは異なる比較方法です。
そのため、プログラム内で同じ処理を実行するブロックやクロージャを区別したり、特定の条件を満たすProcオブジェクトを検索したりする際に役立ちます。例えば、特定の処理を何度も登録・解除するようなシステムで、登録済みのProcオブジェクトと新しく生成したProcオブジェクトが同じ振る舞いをするものかどうかを確認する用途などが考えられます。このメソッドを利用することで、Procオブジェクトの内容に基づいた比較が可能になります。
構文(syntax)
1proc_object_a = Proc.new { puts "Example" } 2proc_object_b = proc_object_a 3proc_object_c = Proc.new { puts "Example" } 4 5proc_object_a == proc_object_b # => true 6proc_object_a == proc_object_c # => false
引数(parameters)
req
- other: Proc: 比較対象のProcオブジェクト
戻り値(return)
Boolean
2つのProcオブジェクトが全く同じコードブロックを参照している場合に真(true)、そうでない場合に偽(false)を返します。