Code Fix

上級Proc.new の中で return すると LocalJumpError になることがある › パターン5

Proc.new の中で return すると LocalJumpError になることがある

Proc(Proc.newやKernel#proc)の中でreturnを使うと、そのProcを囲んでいたメソッドから抜けようとします。

 1  def make_marker
 2    __________________________
                   ^
 3  end
 4  
 5  greet = make_marker
 6  puts greet.call
main.rb:2:in `block in make_marker': unexpected return (LocalJumpError) from main.rb:6:in `<main>'

空欄を埋めて実行を通す

広告
広告スロット(未設定)

Proc.new の中で return すると LocalJumpError になることがある

呼び出し時にすでにそのメソッドの外にいる場合(トップレベルで呼んだ場合など)、戻る先が無くLocalJumpErrorになります。同じ書き方でもlambdaは自分自身から抜けるだけなので、この問題は起きません。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)