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のテーマについて詳しく知りたい場合は、遠慮なくお知らせください。
-
RuboCopを使用したRubyコードのリンティングと自動フォーマット
リンティングは、プログラムおよびスタイルのエラーについてソースコードを自動チェックすることです。このチェックは、リンターと呼ばれる静的コード分析ツールによって実行されます。ただし、コードフォーマッタは、事前に構成された一連のルールに厳密に準拠するようにソースコードをフォーマットするためのツールです。リンターは通常違反を報告しますが、問題を修正するのは通常プログラマー次第ですが、コードフォーマッターはそのルールをソースコードに直接適用する傾向があるため、フォーマットの間違いを自動的に修正します。 プロジェクトでより一貫性のあるコードスタイルを作成するタスクでは、通常、個別のリンティングツールと
-
LoggerとLogrageを使用してRubyにログインする
Rubyでのログの操作 ロギングは、アプリケーションが通常対処する主要なタスクの1つです。ログは、たとえば、必要なときに使用されます アプリ内で何が起こっているかを確認します それらを監視する、または 特定のデータの指標を収集します。 新しいプログラミング言語を学ぶとき、情報を記録するための最初の明白な選択は、ネイティブメカニズムです。通常、それは簡単で、文書化されており、コミュニティ全体に広く行き渡っています。 ログデータは、使用している会社、ビジネス、アプリケーションの種類によって大きく異なります。したがって、あなたとあなたのチームが選択したロギングソリューションがその全体的な使