Proc ϥ֥å򥳥ƥ(ѿΥפ䥹å
졼)ȤȤ˥֥Ȳ³֥ȤǤProc 
ѿΥפƳʤȤ̾ΤʤؿΤ褦˻
ޤ(ʥߥåѿ Proc 
ѿȤƻȤޤ)

Proc ѿΥפݻƤ뤳Ȥϰʲ
ѿ var 򻲾ȤǤƤ뤳Ȥ狼ޤ

    var = 1
    $foo = Proc.new { var }
    var = 2

    def foo
      $foo.call
    end

    p foo       # => 2

Proc ᥽åɤ꥿󤷤Ƥޤä Proc 
 return, retry 㳰 
LocalJumpError ȯޤ

    def foo
      proc { return }
    end

    foo.call
    # => in `call': return from proc-closure (LocalJumpError)

    def foo
      proc { retry }
    end

    foo.call
    # => in `call': retry from proc-closure (LocalJumpError)

ƥ졼Ф Proc ֥Ȥ `&' ꤷϤȥ
졼֥åΤ褦ưޤ̩ˤϰʲΰ㤤ޤ


        # ʤ
        (1..5).each { break }

        # ruby 1.6.7, 1.8 ʤ1.6.8 Ǥ㳰
        proc = Proc.new { break }
        (1..5).each(&proc)

        # ruby 1.6 ǤϡLocalJumpError
        # ruby 1.8 Ǥϡeach Ƽ¹
        proc = Proc.new { retry }
        (1..5).each(&proc)
        #=> retry from proc-closure (LocalJumpError)

ϡProc ֥Ȥƥ졼֥åȤƿ񤦺ݤ
¤Ǥ