Ruby,你能从同一个方法中调用一个方法吗?

时间:2013-05-01 22:31:10

标签: ruby methods

我正在尝试比较2个文件。如果仅显示1个文件,则会创建副本。 在使用begin..rescue..end时,是否可以重新调用该方法?

def differ()
begin
  file_today = read_file("/etc/hosts.deny")
  file_yesterday = read_file("/etc/hosts.deny_old")
  content = Diffy::Diff.new(file_yesterday, file_today)
rescue
  copy_log
  differ #call itself?!O_o Well, after the copy has been created!
end
  return content
end

这是“不同的#call本身?!O_o嗯,创建副本后!”我不能上班。

1 个答案:

答案 0 :(得分:2)

您可以在rescue子句中使用retry关键字重新启动它。

编辑:以下是免费版Programming Ruby:

的更多信息

“redo语句导致循环重复当前迭代。但是,有时候,你需要将循环回到最开始。重试语句就是故障。重试重启任何类型的迭代器循环。重试在重新启动之前会重新评估迭代器的任何参数。“

编辑:我意识到重试的这种行为已在1.9中弃用。只知道重试通常用于重新执行引发异常的代码块。

确保在重试之前修复了导致异常的原因 - 否则最终会无限循环!