我正在尝试将 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,但结果是一样的。