相关疑难解决方法(0)

红宝石块并从块中返回一些东西

我使用的是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

5
推荐指数
2
解决办法
2773
查看次数

标签 统计

ruby ×1