相关疑难解决方法(0)

在Ruby块中使用'return'

我正在尝试将Ruby 1.9.1用于嵌入式脚本语言,以便"最终用户"代码在Ruby块中编写.这个问题的一个问题是我希望用户能够在块中使用'return'关键字,因此他们不需要担心隐式返回值.考虑到这一点,这是我希望能够做到的事情:

def thing(*args, &block)
  value = block.call
  puts "value=#{value}"
end

thing {
  return 6 * 7
}
Run Code Online (Sandbox Code Playgroud)

如果我在上面的例子中使用'return',我会得到一个LocalJumpError.我知道这是因为有问题的块是Proc而不是lambda.如果我删除'return',代码就可以工作,但我真的更喜欢在这种情况下使用'return'.这可能吗?我已经尝试将块转换为lambda,但结果是一样的.

ruby lambda return proc-object

83
推荐指数
3
解决办法
5万
查看次数

为什么显性回报会对Proc产生影响?

def foo
  f = Proc.new { return "return from foo from inside proc" }
  f.call # control leaves foo here
  return "return from foo" 
end

def bar
  b = Proc.new { "return from bar from inside proc" }
  b.call # control leaves bar here
  return "return from bar" 
end

puts foo # prints "return from foo from inside proc" 
puts bar # prints "return from bar" 
Run Code Online (Sandbox Code Playgroud)

我认为这个return关键字在Ruby中是可选的,return无论你是否请求它,你总是在想.鉴于这种情况,我觉得很奇怪,foobar有不同的输出由事实来确定foo包含一个明确的returnProc …

ruby return proc-object

51
推荐指数
3
解决办法
1万
查看次数

标签 统计

proc-object ×2

return ×2

ruby ×2

lambda ×1