在Poignant Guide中,给出了redo关键字的以下示例:
class LotteryTicket
def self.new_random
new(rand(25) + 1, rand(25) + 1, rand(25) + 1)
rescue ArgumentError
redo
end
end它应该一直调用new,直到所有三个随机数都是唯一的。但是在我输入这段代码并运行了几次之后,我得到了这个错误:LocalJumpError: unexpected redo。我在别处查找了redo关键字,它看起来只适用于循环和迭代器。那么为什么要在他的示例中尝试这样使用它呢?应该如何重写此方法才能正确工作?
发布于 2009-03-22 07:53:44
他一定是想use retry,而不是redo。
发布于 2011-06-14 06:48:28
redo重新启动数据块:
l = lambda {puts "hi"; redo}
l.callhttps://stackoverflow.com/questions/670674
复制相似问题