【Ruby3.x】Method::clone()メソッドの使い方
cloneメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
cloneメソッドは、レシーバであるMethodオブジェクト自身の複製(コピー)を生成するメソッドです。
このメソッドは、Rubyの一般的なオブジェクト複製機能であるObject#cloneと同様に動作し、Methodオブジェクトの独立したインスタンスを作成します。複製されたMethodオブジェクトは、元のMethodオブジェクトと同じメソッド(つまり実行されるコード)を、同じレシーバ(そのメソッドが呼び出される対象のオブジェクト)に対して呼び出すことができます。
重要な点として、この複製操作では、参照先のメソッド定義自体や、メソッドが作用する対象のレシーバオブジェクト自体が複製されるわけではありません。複製されるのは、あくまで「特定のメソッドを特定のオブジェクトに対して呼び出す」という情報を保持するMethodオブジェクトという「参照」のインスタンスです。
したがって、元のMethodオブジェクトと複製されたMethodオブジェクトは、RubyのオブジェクトID上は異なる独立した存在となります。しかし、どちらのMethodオブジェクトを呼び出しても、全く同じコードが同じレシーバに対して実行され、同じ結果が得られます。これは、Methodオブジェクトがメソッドへの参照をカプセル化したものであるためです。
構文(syntax)
1"string".method(:length).clone
引数(parameters)
引数なし
引数はありません
戻り値(return)
Method
メソッドオブジェクトのコピーを生成し、新しいメソッドオブジェクトを返します。