Skip to content

制御フロー

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";
}   
// => odd
let a = 3;
if a == 1 {
    print "one";
} else if a % 2 == 0 {
    print "even";
} else {
    print "odd";
}   
// => odd

if式はの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, 6
let a = 1;
while a < 10 {
    if a == 7 { break; }
    if a % 3 != 0 { continue; }
    print a;
}
// => 3, 6

loop文

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文と同様にbreakcontinueが使用できます。