【发布时间】:2011-02-19 15:48:52
【问题描述】:
我正在使用 ruby 1.8.7。
p = lambda { return 10;}
def lab(block)
puts 'before'
puts block.call
puts 'after'
end
lab p
以上代码输出为
before
10
after
我将相同的代码重构为这个
def lab(&block)
puts 'before'
puts block.call
puts 'after'
end
lab { return 10; }
现在我收到 LocalJumpError:意外返回。
对我来说,这两个代码都在做同样的事情。是的,在第一种情况下,我传递了一个过程,在第二种情况下,我传递了一个块。但是 &block 将该块转换为 proc。所以 proc.call 的行为应该是一样的。
是的,我看过这篇帖子Using 'return' in a Ruby block
【问题讨论】:
标签: ruby