繰り返し
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
私の名前は太郎です。
私の名前は花子です。
私の名前は一郎です。
私の名前は清です。