1

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

「differ #call 自体?!O_o さて、コピーが作成された後!」です。仕事に行けないこと。

4

1 に答える 1

2

retryレスキュー句でキーワードを使用して再起動できます。

編集:プログラミング Rubyの無料版からの詳細情報は次のとおりです。

「redo ステートメントにより、ループは現在の反復を繰り返します。ただし、ループを最初に巻き戻す必要がある場合もあります。retry ステートメントは単なるチケットです。retry は、あらゆる種類の反復子ループを再開します。Retry は、任意の反復を再評価します。再起動する前にイテレータに引数を渡してください。」

編集: 再試行のこの動作は 1.9 で非推奨になっていることに気付きました。再試行は通常、例外を発生させたコード ブロックを再実行するために使用されることを知っておいてください。再試行する前に、例外の原因を修正したことを確認してください。そうしないと、無限ループになってしまいます。

于 2013-05-01T22:37:57.520 に答える