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
,但實際上得到了貝洛w:
SystemStackError: stack level too deep
from /usr/lib/ruby/1.9.1/irb/workspace.rb:80
Maybe IRB bug!
我無法解釋爲什麼這個。任何人都可以幫我一樣嗎?
你爲什麼期望得到'nil'? – 2013-02-09 19:41:06
你爲什麼在你的投票中遞歸地調用foo? – Phrogz 2013-02-09 19:52:23