Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】Proc::dup()メソッドの使い方

dupメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

dupメソッドは、Procオブジェクトを複製するメソッドです。これは、指定されたProcオブジェクトと全く同じ振る舞いをする新しいProcオブジェクトを作成します。

元のProcオブジェクトが持っていたコードブロック、受け取る引数、そしてそれが実行される際の環境(スコープ)は、複製されたProcオブジェクトにもそのまま引き継がれます。その結果、dupメソッドによって生成された新しいProcオブジェクトは、元のProcオブジェクトとまったく同じコードを実行し、同じ結果を返します。

ただし、複製されたProcオブジェクトは、元のProcオブジェクトとは異なる独立したオブジェクトとして扱われます。これにより、例えば元のProcオブジェクトにインスタンス変数などが設定されていた場合、それらの値も新しいオブジェクトにコピーされます。Procオブジェクト自体は実行されるコードの塊であり、その内容は通常変更されることはありませんが、オブジェクトとしての同一性を変更したい場合や、複製されたオブジェクトに独立した追加情報を紐づけて管理したい場合に、このdupメソッドは役立ちます。

構文(syntax)

1a_proc_object = Proc.new { |arg| puts "Executed with: #{arg}" }
2duplicated_proc_object = a_proc_object.dup

引数(parameters)

引数なし

引数はありません

戻り値(return)

Proc

Proc.dup は、呼び出した Proc オブジェクトのコピーを返します。

関連コンテンツ