繰り返し
Rustで繰り返しを実装する手段は以下の3つがあります。
| キーワード | 説明 |
|---|---|
| loop | 無限ループ |
| while | 条件がtrueならループ |
| for | イテレータを使ったループ |
loop
loopは無限ループです。
以下のコードは無限に「無限ループです。」と表示し続けます。
実行したらCtrl + Cで止めましょう。
fn main() {
loop{
println!("無限ループです。");
}
}
while
whileは指定した条件式によって繰り返しを制御します。以下のように書きます。
while 繰り返し条件 { 繰り返す処理 }
繰り返し条件はbool型を返す式です。条件の真理値によって以下のように動作します。
-
trueの場合 → カッコ内の処理を実行する。その後、再び条件式を評価する(繰り返し)。 -
falseの場合 → 処理を実行せず、次の処理に移る。
条件がtrueの間ループし続けます。
fn main() {
let mut count = 1;
//条件式(count < 10)を評価し、trueならカッコの中身を実行する。
while count < 10 {
println!("count = {}",count);
count += 1;
//ここまで実行したら再び条件式を判定する。
}
}
実行結果
count = 1
count = 2
count = 3
count = 4
count = 5
count = 6
count = 7
count = 8
count = 9
for
forはイテレータを用いる繰り返しです。イテレータとはチェーンのように連なるデータで、データを順番に生成することが出来ます。forは対象となるデータをイテレータに変換し、イテレータからデータを一つずつ取り出して変数に束縛して何らかの処理をします。
forループの書き方は以下の通りです。
for 変数 in イテレータに変換可能なデータ { 繰り返す処理 }
以下のように使うことが出来ます。
fn main() {
//決まった回数の繰り返し。
//1..10は1から9までの数値を順番に生成する。
for count in 1..10 {
println!("count = {}",count);
}
//Vecの各要素に対して1回ずつ処理を行う。
//Vecはイテレータに変換可能。
let name_list = vec!["太郎","花子","一郎","清"];
for name in name_list {
println!("私の名前は{}です。",name);
}
}
上記の例では2つのforループがあります。
一つは決まった回数の繰り返しです。繰り返しの回数を1..10と指定しています。これで1から9までの数値を順番に生成することが出来、9回の繰り返しとなります。
もう一つはベクタの各要素に対して処理を繰り返し行うためにforを使用しています。name_listは4つの要素を持つベクタであり、これをイテレータにすると要素を4回生成するイテレータになります。繰り返しの各過程では、nameにname_listの各要素が順番に束縛されます。
実行結果
count = 1
count = 2
count = 3
count = 4
count = 5
count = 6
count = 7
count = 8
count = 9
私の名前は太郎です。
私の名前は花子です。
私の名前は一郎です。
私の名前は清です。