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