こんにちは、越水です。

毎度タコな質問で恐縮なのですけど、Procの中では、
なぜreturnを使うことができないのでしょうか?

Procの途中で処理を止めたいことがあったのですが、
returnが使えないので、次のように実装しました:

pr = proc {
  | arg |
  begin
    if arg
      raise StandardError.new
    end
    p arg
  rescue
  end
}

もしreturnが使えるとしたら:

pr = proc {
  | proc |
  if arg
    return
  end
  p arg
}

と書けます。

越水 (greentea / fa2.so-net.ne.jp)