制御フロー
if式
if式は、与えられた条件がtrueの時に、後続のブロックを評価します。elseブロックがある場合、条件がfalseの時に実行されます。else ifブロックを用いることで、チェーンを作ることができます。
third
let a = 3;
if a == 1 {
print "one";
} else if a % 2 == 0 {
print "even";
} else {
print "odd";
}
// => oddlet a = 3;
if a == 1 {
print "one";
} else if a % 2 == 0 {
print "even";
} else {
print "odd";
}
// => oddif式は式の1種なので、値を返すことができます。条件にマッチするブロックがない場合は、nullが返されます。
third
let a = 1;
// if-expression is an expression, so it can return a value.
let is_one = if a == 1 { "yes" } else { "no" };
assert is_one == "yes";
let is_two = if a == 2 { "yes" };
assert is_two == null;let a = 1;
// if-expression is an expression, so it can return a value.
let is_one = if a == 1 { "yes" } else { "no" };
assert is_one == "yes";
let is_two = if a == 2 { "yes" };
assert is_two == null;while文
while文は、与えられた条件がtrueである限り、後続のブロックを繰り返し実行します。
third
let a = 1;
while a < 10 {
a += 1;
}
assert a == 10;let a = 1;
while a < 10 {
a += 1;
}
assert a == 10;break式を用いてループから抜け出すことができます。また、continue式を用いて、ループを先頭からやり直すことができます。
third
let a = 1;
while a < 10 {
if a == 7 { break; }
if a % 3 != 0 { continue; }
print a;
}
// => 3, 6let a = 1;
while a < 10 {
if a == 7 { break; }
if a % 3 != 0 { continue; }
print a;
}
// => 3, 6loop文
loop文は、後続のブロックを繰り返し実行します。while文の条件がtrueの場合と同等ですが、loop文の方が高速です。
while文と同様に、break式を用いてループから抜け出すことができます。また、continue式を用いて、ループを先頭からやり直すことができます。breakまたはreturnでループを脱出しない限り、無限ループに陥ってしまう点に注意してください。
third
let a = 1;
loop {
a += 1;
if a == 10 { break; }
}
assert a == 10;let a = 1;
loop {
a += 1;
if a == 10 { break; }
}
assert a == 10;for文
for文は、イテラブルな型の値に対して、繰り返し処理を行います。代表的な例はrange型と配列です。
third
for i in 0..10 {
print i; // => 0, 1, .., 9
}
for i in 0..=10 {
print i; // => 0, 1, .., 10
}
for i in [1, 2, 3] {
print i; // => 1, 2, 3
}for i in 0..10 {
print i; // => 0, 1, .., 9
}
for i in 0..=10 {
print i; // => 0, 1, .., 10
}
for i in [1, 2, 3] {
print i; // => 1, 2, 3
}while文と同様にbreakとcontinueが使用できます。