Ruby のループ制御をマスターする:やり直し、再試行、次の説明
retry について話しました。 例外後の再試行について議論するときにキーワードを使用します。あまり知られていないそのバージョン redo 同様に動作しますが、ブロック全体ではなくループの反復を再実行します。
redo キーワード
前回のアカデミー記事で学んだように、retry ブロック内のコードを再試行できます。
この例では、例外を発生させる前に、「Iteration」という単語をコンソールに出力します。 retry を呼び出すレスキュー ブロックが実行されます。 そしてブロックを最初からやり直します。この結果、プログラムは Iteration を無限に出力することになります。 。 redo キーワードを使用すると、ループを使用するときに同様の効果を実現できます。これは、たとえば、反復中に再試行する必要がある状況で役立ちます。
これは次のように出力されます:
反復回数が同じままであることに注目してください。実行をループの先頭にステップバックします。 retry を使用したコードのこのバリアント まったく同じ出力が表示されます:
redo を使用できます ループ内での再試行を実装します。次の例では、ジョブのキューがあります。 :success を返します。 または :failure 。ジョブが成功するまで、同じループの繰り返しを再実行し続けます。
next キーワード
現在のループの先頭に戻るのではなく、ループの次の反復に移動したい場合は、next を使用できます。 .
これは次のように出力されます:
反復カウンタがどのように増加し続けるかわかりますか?ほとんどの場合、next を使用します。 あなたが望むものです。 redo を見てください。 正確な回数実行するループが必要な場合、または配列を反復処理するときにエラー処理が必要な場合。
ループ内での反復のやり直しについて何か新しいことを学んでいただければ幸いです。また、この記事 (または AppSignal Academy シリーズの他の記事) についてのご意見をぜひお聞かせください。ご意見、またはもっと詳しく知りたい Ruby のテーマがあれば、お気軽にお聞かせください。
タイス・キャディエ
最高技術責任者兼共同創設者。 Thisjs は、インフラストラクチャの作業のために数か月間行方不明になることがあります。何十億ものリクエストが正しく処理されるようにします。会社のベストドラマー。
Thijs Cadier によるすべての記事
-
RubyでBig-O表記を調べる
「そのためのBig-O表記は何ですか?」という質問を聞くことほど私を怖がらせなかった時期がありました。学校での話題を思い出しましたが、数学と関係があったので(これは私の最強の科目ではありませんでした)、それを黒く塗りつぶしました。 しかし、私のキャリアが進むにつれて、私は自分自身に気づきました: パフォーマンスチャートを見る 遅いクエリをデバッグしようとしています 負荷が増加した場合にコードがどのように保持されるかを検討したかどうかを尋ねられます Big-Oを学ぶために戻って(わかりますか?)と決めたとき、私はその高レベルの単純さに驚いていました。この記事で学んだことを共有して、エンジ
-
Railsのセキュリティの脅威:認証
このシリーズのパート1、インジェクションアタックについて説明しました OWASPトップ10Webアプリケーションセキュリティリスクに関するシリーズの2番目の記事では、認証の失敗とデータ漏洩の脅威の世界に飛び込みます。 具体的には、ハッカーが作成したコードをだまして攻撃を実行し、ユーザーのデータを取得するのがいかに簡単かについて説明します。 ユーザー列挙 :データベースに存在するかどうかを確認するためだけに、可能性のあるユーザーのリストをブルートフォーステストしてログインページを悪用した場合。 弱いパスワード :システムで弱いパスワードが許可されている場合、ハッカーはブルートフォース攻撃を