Rust 速習チュートリアル

Rust If...Else

1. 条件とIf..Else

Rustでは、数学でおなじみの比較条件をサポートしています。

  • より小さい: a < b
  • 以下: a <= b
  • より大きい: a > b
  • 以上: a >= b
  • 等しい: a == b
  • 等しくない: a != b

これらの条件を使用して、異なる判断に基づいた異なるアクションを実行できます。
Rustには以下の条件分岐ステートメントが用意されています。

  • 特定の条件が true の場合に実行されるコードブロックを指定するには if を使用します。
  • 同じ条件が false の場合に実行されるコードブロックを指定するには else を使用します。
  • 最初の条件が false の場合に、新しくテストする条件を指定するには else if を使用します。
  • 多くの代替コードブロックから実行するものを指定するには match を使用します。

       注意: 他の多くのプログラミング言語とは異なり、Rustの if..elseステートメントとしてだけでなく、エクスプレッション(式)変数に値を代入するため)としても使用できます。詳細はページ下部の例を参照してください。

2. if ステートメント

条件が true の場合に実行されるコードブロックを指定するには、if を使用します。

例:

if 7 > 5 {
  println!("7は5より大きいです。");
}

変数をテストすることも可能です。

例:

let x = 7;
let y = 5;

if x > y {
  println!("xはyより大きいです。");
}

3. if...else ステートメント

条件が true でない場合に、別のコードを実行するには else を使用します。

例:

let age = 16;

if age >= 18 {
  println!("投票可能です。");
} else {
  println!("投票するには若すぎます。");
}

4. else if ステートメント

else if を使用することで、複数の条件をチェックできます。

例:

let score = 85;

if score >= 90 {
  println!("評価: A");
} else if score >= 80 {
  println!("評価: B");
} else if score >= 70 {
  println!("評価: C");
} else {
  println!("評価: F");
}

5. if をエクスプレッション(式)として使用する

Rustでは、if...elseエクスプレッション(式)としても利用可能です。 つまり、if の結果を変数に代入することができます。

例:

let time = 20;
let greeting = if time < 18 {
  "こんにちは。"
} else {
  "こんばんは。"
};
println!("{}", greeting);

ifエクスプレッションとして使用する場合、必ず else を含める必要があります。これにより、結果が常に値を保持することが保証されます。

5.1 簡略化されたシンタックス

ブロックが単一のエクスプレッションのみを含む場合、以下のように1行で短く記述できます。

例:

let time = 20;
let greeting = if time < 18 { "こんにちは。" } else { "こんばんは。" };
println!("{}", greeting);

ヒント: これは、JavaやC言語などの三項演算子condition ? value1 : value2)と同様の動きをします。Rustには三項演算子自体は存在しませんが、if...elseエクスプレッションとして使うことで、同じ効果が得られます。

6. 型(Type)を混合させない

注意: ifelse から返される値は、同じデータ型である必要があります。上記の例では両方とも文字列(String)です。

文字列整数(Integer)のように異なる型を混ぜてしまうと、エラーが発生します。

例:

let number = 5;
let result = if number < 10 { "小さすぎます" } else { 100 };
println!("{}", result);

実行結果:

error[E0308]: if and else have incompatible types