class Test
def foo
throw(:label, foo)
"should never get here"
end
def bar
"bar"
end
end
test = Test.new
今、私は以下を試しました:
puts("bar -> " + catch(:label) {test.bar})
そして得た:
bar -> bar
=> nil
今私が試したとき:
puts("foo -> " + catch(:label) {test.foo})
私は私が得るだろうと思っていnil
ましたが、実際には以下を手に入れました:
SystemStackError: stack level too deep
from /usr/lib/ruby/1.9.1/irb/workspace.rb:80
Maybe IRB bug!
なぜこれなのか自分で説明することはできません。誰かが私を同じように助けてくれますか?