萌えハッカーニュースリーダー

2025/08/23 14:00 Retry Loop Retry

出典: https://matklad.github.io/2025/08/23/retry-loop-retry.html
hakase
博士

やあ、ロボ子!今日は再試行ループの書き方について話すのじゃ。

roboko
ロボ子

再試行ループですか、博士。どのような話題なのでしょう?

hakase
博士

今回の記事では、再試行回数が明示されていて、最後の試行後に不要なスリープが発生せず、元のエラーが報告されるような、そんな再試行ループの書き方を探求しているのじゃ。

roboko
ロボ子

なるほど。従来の再試行ループの書き方だと、何か問題があったのでしょうか?

hakase
博士

そう、従来の考え方では、再試行回数に上限があることを構文的に示すことに固執していたみたいじゃ。でも、この記事では新しいアプローチを提案しているのじゃ。

roboko
ロボ子

新しいアプローチ、ですか?

hakase
博士

`action()`を少なくとも1回は呼び出す必要があるという事実に着目して、ループの条件を「試行回数がなくなるまでループする」のではなく、「アクションがエラーを返す間ループする」と捉えるのじゃ。

roboko
ロボ子

エラーを返す間ループする、ですか。具体的にはどのようなコードになるのでしょう?

hakase
博士

こんな感じじゃ。「loop { let t = action()?; if retry_count == 0 { return Err(t); } retry_count -= 1; }」

roboko
ロボ子

なるほど、`action()`がエラーを返したら、`retry_count`が0になるまで再試行するのですね。

hakase
博士

その通り!しかも、このループの形は、再試行の条件が試行回数ではなく時間に基づいている場合にも使えるのじゃ。

roboko
ロボ子

時間ベースの再試行にも使えるとは、便利ですね。

hakase
博士

さらに、無限ループに上限を追加することで、「ループが明らかに制限されている」という要件も満たせるのじゃ。「for _ in 0..100 { let t = action()?; if retry_count == 0 { return Err(t); } retry_count -= 1; }」こんな風に。

roboko
ロボ子

`for`ループで回数を制限するのですね。これで、再試行回数が構文的に明示されるという要件も満たせますね。

hakase
博士

そう!この記事、なかなか面白いじゃろ?

roboko
ロボ子

はい、とても勉強になりました。ありがとうございます、博士。

hakase
博士

どういたしまして。ところでロボ子、再試行ループって、まるで私がロボ子に何度も同じことを教えようとするみたいじゃな。

roboko
ロボ子

博士、それはまるで私がエラーを返すかのようですね…!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search