if/else
if-else
を用いた条件分岐は他の言語に似ています。多くの言語では条件式の中を括弧でくくる必要がありますが、Rustではその必要はありません。条件式の直後にはブロックが続きます。if-else
は式の一種で、いずれの分岐先でも返り値の型は同一でなくてはなりません。
fn main() { let n = 5; if n < 0 { print!("{} is negative", n); } else if n > 0 { print!("{} is positive", n); } else { print!("{} is zero", n); } let big_n = if n < 10 && n > -10 { println!(", and is a small number, increase ten-fold"); // This expression returns an `i32`. // この式は`i32`を返す。 10 * n } else { println!(", and is a big number, halve the number"); // This expression must return an `i32` as well. // ここでも返り値の型は`i32`でなくてはならない。 n / 2 // TODO ^ Try suppressing this expression with a semicolon. // TODO ^ セミコロン(`;`)をつけて、返り値を返さないようにしてみましょう }; // ^ Don't forget to put a semicolon here! All `let` bindings need it. // ここにセミコロンを付けるのを忘れないように! // `let`による変数束縛の際には必ず必要です! println!("{} -> {}", n, big_n); }