[解決済み] Rustで逆順のforループを作るには?
2022-12-23 09:48:45
質問
編集者注:この質問はRust 1.0がリリースされる前にされ
..
"range"演算子が導入される前に質問されたものです。質問のコードはもはや現在のスタイルを表していませんが、以下のいくつかの回答は Rust 1.0 以降で動作するコードを使用しています。
で遊んでいたのですが Rust by Example ウェブサイト で遊んでいて、fizzbuzzを逆に出力したいと思いました。試したのは以下の通りです。
fn main() {
// `n` will take the values: 1, 2, ..., 100 in each iteration
for n in std::iter::range_step(100u, 0, -1) {
if n % 15 == 0 {
println!("fizzbuzz");
} else if n % 3 == 0 {
println!("fizz");
} else if n % 5 == 0 {
println!("buzz");
} else {
println!("{}", n);
}
}
}
コンパイルエラーは出ませんでしたが、何も出力されません。100から1まで反復処理するにはどうしたらいいでしょうか?
どのように解決するのですか?
<ブロッククオート編集者注:この質問は、Rust 1.0より前のRustの部分について言及しています。最新のコードについては、他の回答を見てください。
あなたのコードが動作しないのは
uint
の値 -1 は uint の最大値に等しいからです。range_step イテレータはオーバーフローを検出すると即座に停止します。int を使用すると、これが修正されます。
std::iter::range_step(100i, 0, -1)
また、イテレータを反転させるには
rev()
.
for n in range(0u, 100).rev() { ... }
ただし、これは100->1ではなく、99->0からになることに注意してください。
関連
-
[解決済み] Luaのpairs()とipairs()の違いは何ですか?
-
[解決済み] JavaScriptのオブジェクトをループスルーまたは列挙するにはどうすればよいですか?
-
[解決済み] Javaでenumを繰り返し処理するためのforループ
-
[解決済み] ディレクトリ内のファイルをループしてパスを変更し、ファイル名にサフィックスを追加する方法
-
[解決済み] JavaScriptのfor...of構文でループのカウンタ/インデックスを取得する
-
[解決済み] .NETでは、'for'と'foreach'のどちらのループが速く実行されますか?
-
[解決済み] std::mapで範囲指定for()ループを使用するには?
-
[解決済み】PythonのFORループ内のループカウントを取得する
-
[解決済み】Rustで文字列を分割する方法は?
-
[解決済み】Rustで未使用のコードの警告を無効にする方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン