我正在尝试将Ruby 1.9.1用于嵌入式脚本语言,以便将“最终用户”代码写入Ruby块中。与此相关的一个问题是,我希望用户能够在块中使用'return'关键字,因此他们不必担心隐式的返回值。考虑到这一点,这是我想做的事情:
def thing(*args, &block)
value = block.call
puts "value=#{value}"
end
thing {
return 6 * 7
}
如果在上面的示例中使用“ return”,则会收到LocalJumpError。我知道这是因为所讨论的块是Proc而不是lambda。如果删除“ return”,该代码将起作用,但在这种情况下,我真的更希望能够使用“ return”。这可能吗?我尝试将块转换为lambda,但结果是相同的。