在 Ruby 中编写“如果它不起作用,修复它并重试”函数的正确方法
Proper way to write an 'If it doesn't work, fix it and try again' function in Ruby
我有一个不可避免地断断续续的访问器对象。有时当它尝试一个动作时,它的内部崩溃并且需要在重新尝试动作之前重新启动。
编写如下函数很容易:
def might_break
try_something_that_might_break
rescue
fix_it
might_break
end
当然要用计数器来避免无限损坏。
但我想让事情保持干燥,我的每一个访问器方法都需要几乎相同的照顾。
我考虑过创建一个函数 safely
,它需要一个块,但后来我不确定如何将它 return 到父函数。
提前致谢!
你的意思是这样的吗?
def safely num, &block
count = 0
begin
block.call
rescue
count += 1
retry if count < num
end
end
用safely(5) {your_broken_method}
调用
我有一个不可避免地断断续续的访问器对象。有时当它尝试一个动作时,它的内部崩溃并且需要在重新尝试动作之前重新启动。
编写如下函数很容易:
def might_break
try_something_that_might_break
rescue
fix_it
might_break
end
当然要用计数器来避免无限损坏。
但我想让事情保持干燥,我的每一个访问器方法都需要几乎相同的照顾。
我考虑过创建一个函数 safely
,它需要一个块,但后来我不确定如何将它 return 到父函数。
提前致谢!
你的意思是这样的吗?
def safely num, &block
count = 0
begin
block.call
rescue
count += 1
retry if count < num
end
end
用safely(5) {your_broken_method}