#MOC #Proc [[🗃️Ruby]]に組み込まれているクラスの1つ。 ブロックをオブジェクト化したもの。 ローカル変数の値はブロック内でも参照できる。 > ローカル変数のスコープを導入しないことを除いて名前のない関数のように使えます。ダイナミックローカル変数は Proc ローカルの変数として使えます。 ```ruby [1] pry(main)> hoge = 1 => 1 [2] pry(main)> obj = proc { p hoge + 1 } => #<Proc:0x000000011f09fcc0 (pry):2> [3] pry(main)> hoge = 2 => 2 [4] pry(main)> obj.call => 3 ``` > [Kernel.#proc](https://docs.ruby-lang.org/ja/latest/method/Kernel/m/proc.html) は Proc.new と同じになります。引数に & を付けることで手続きオブジェクト化したブロックは、Proc.new で生成されたそれと同じように振る舞います。 `Proc.new { var }`と、 `proc { var }`は同じ。 ## 📚ドキュメント - [class Proc (Ruby 3.2 リファレンスマニュアル)](https://docs.ruby-lang.org/ja/latest/class/Proc.html) ## 📖ノウハウ ## 💁トラブルシューティング