#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)
## 📖ノウハウ
## 💁トラブルシューティング