[#47955] るびま記事募集:FiberとかSinatra/PadrinoとかBundlerとか — Makoto Kuwata <kwa@...>

桑田といいます。るびま編集部に入りました。

17 messages 2011/04/11

[#48016] 文字列を正規表現にマッチする部分と他の部分に分割 — "5.5" <5.5@...>

5.5 です。

12 messages 2011/04/28

[ruby-list:47997] lambda中のProc中のreturnの挙動について

From: m_takao <threewayhandshake@...>
Date: 2011-04-22 07:31:55 UTC
List: ruby-list #47997
高尾と申します。
ちょっと日本語では表しにくいのですが、件名の通り、lambda中のProc中のreturnの挙動が不可解だったため、バグかと思い、投稿します。

a = lambda do
  b = Proc.new do
    return
  end
  b[]
end
a[]

上記のコードを実行すると、ruby1.8.7ではLocalJumpErrorが起こり、ruby1.9.1では正常終了します。
lambda中のreturnはcallのreturnになり、Proc.new中のreturnは生成元のreturnになる筈なので、
正常終了が正しい挙動のように思います。

また、

def a
  b  = lambda do
    Proc.new do
      return
    end
  end
  b[][]
end
a

を実行すると、ruby1.8.7、ruby1.9.1ともに正常終了します。
こちらは、Proc.new中のreturnが実行されるときには生成元が既に終了しているので、LocalJumpErrorが起こるのが正しい挙動のように思います。

In This Thread

Prev Next