[edit] 要約 ブロックをコンテキスト(ローカル変数のスコープやスタックフレーム)とともにオブジェクト化した手続きオブジェクトです。 Proc は ローカル変数のスコープを導入しないことを除いて名前のない関数のように使えます。ダイナミックローカル変数は Proc ローカルの変数として使えます。 Proc がローカル変数のスコープを保持していることは以下の例で変数 var を参照できていることからわかります。 例 var = 1 $foo = Proc.new { var } var = 2 def foo $foo.call end p foo # => 2 手続きを中断して値を返す 手続きオブジェクトを中断して、呼出し元(呼び出しブロックでは yield、それ以外では Proc#call) へジャンプし値を返すには next を使います。break や return ではありません。