我使用的是ruby 1.8.7.
p = lambda { return 10;}
def lab(block)
puts 'before'
puts block.call
puts 'after'
end
lab p
Run Code Online (Sandbox Code Playgroud)
上面的代码输出是
before
10
after
Run Code Online (Sandbox Code Playgroud)
我重构了相同的代码
def lab(&block)
puts 'before'
puts block.call
puts 'after'
end
lab { return 10; }
Run Code Online (Sandbox Code Playgroud)
现在我得到LocalJumpError:意外返回.
对我来说,代码都在做同样的事情.是的,在第一种情况下,我通过了一个过程,在第二种情况下,我正在通过一个块.但是阻止转换阻止进入proc.因此proc.call应该表现相同.
是的,我已经看过这篇文章在Ruby块中使用'return'
ruby ×1