Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

Rubyのやり直し、再試行、次のキーワード

再試行について話しました 例外後の再試行について話し合っている間のキーワード。そのあまり知られていない対応するredo 同様に機能しますが、ブロック全体ではなくループ反復を再実行します。

やり直し キーワード

前回のアカデミーの記事で学んだように、再試行 ブロック内のコードの一部を再試行できます:

begin
  puts "Iteration"
  raise
rescue
  retry
end

この例では、例外を発生させる前に、「反復」という単語をコンソールに出力します。 tryを呼び出すレスキューブロックが実行されます ブロックを最初からやり直します。これにより、プログラムは Iterationを際限なく出力します。 。 やり直し キーワードを使用すると、ループを使用するときに同様の効果を得ることができます。これは、たとえば反復中に再試行する必要がある状況で役立ちます。

10.times do |i|
  puts "Iteration #{i}"
  redo if i > 2
end

これは印刷されます:

$ ruby redo.rb
Iteration 0
Iteration 1
Iteration 2
Iteration 3
Iteration 3
Iteration 3
...

反復回数が同じままであることに注意してください。実行をループの開始に戻します。 tryを使用したコードのこのバリアント まったく同じ出力を出力します:

10.times do |i|
  begin
    puts "Iteration #{i}"
    raise if i > 2
  rescue
    retry
  end
end

redoを使用できます ループで再試行を実装します。次の例では、ジョブのキューがあります。 :successを返します。 または:failure 。ジョブが成功するまで、ループの同じ反復を再実行し続けます。

[job_1, job_2, job_3, job_4].each do |job|
  redo unless job.call == :success
end

ルビー1.8

再試行の動作 およびredo Ruby1.8と1.9の間で変更されました。以前はループの反復を再開していましたが、どちらも異なる方法で行われました。 1.9から、再試行 beginでのみ機能します /レスキュー ブロックしてやり直す ループ内でのみ機能します。

キーワード

現在のループの最初に戻るのではなく、ループの次の反復に移動する場合は、 nextを使用できます。 。

10.times do |i|
  puts "Iteration #{i}"
  next if i > 2
  puts "Iteration done"
end

これは印刷されます:

$ ruby next.rb
Iteration 0
Iteration done
Iteration 1
Iteration done
Iteration 2
Iteration done
Iteration 3
Iteration 4
...

反復カウンターがどのように増加し続けるかを確認しますか?ほとんどの場合、 nextを使用します あなたが望むものです。 redoを見てください 正確な回数実行するループが必要な場合、または配列を反復処理するときにエラー処理が必要な場合。

ループでの反復のやり直しについて何か新しいことを学び、この記事(またはAppSignal Academyシリーズの他の記事)についてどう思ったかを知りたいと思います。ご意見をお聞かせください。または、Rubyのテーマについて詳しく知りたい場合は、遠慮なくお知らせください。


  1. RuboCopを使用したRubyコードのリンティングと自動フォーマット

    リンティングは、プログラムおよびスタイルのエラーについてソースコードを自動チェックすることです。このチェックは、リンターと呼ばれる静的コード分析ツールによって実行されます。ただし、コードフォーマッタは、事前に構成された一連のルールに厳密に準拠するようにソースコードをフォーマットするためのツールです。リンターは通常違反を報告しますが、問題を修正するのは通常プログラマー次第ですが、コードフォーマッターはそのルールをソースコードに直接適用する傾向があるため、フォーマットの間違いを自動的に修正します。 プロジェクトでより一貫性のあるコードスタイルを作成するタスクでは、通常、個別のリンティングツールと

  2. LoggerとLogrageを使用してRubyにログインする

    Rubyでのログの操作 ロギングは、アプリケーションが通常対処する主要なタスクの1つです。ログは、たとえば、必要なときに使用されます アプリ内で何が起こっているかを確認します それらを監視する、または 特定のデータの指標を収集します。 新しいプログラミング言語を学ぶとき、情報を記録するための最初の明白な選択は、ネイティブメカニズムです。通常、それは簡単で、文書化されており、コミュニティ全体に広く行き渡っています。 ログデータは、使用している会社、ビジネス、アプリケーションの種類によって大きく異なります。したがって、あなたとあなたのチームが選択したロギングソリューションがその全体的な使