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)を混合させない
注意:ifとelseから返される値は、同じデータ型である必要があります。上記の例では両方とも文字列(String)です。
文字列と整数(Integer)のように異なる型を混ぜてしまうと、エラーが発生します。
例:
let number = 5;
let result = if number < 10 { "小さすぎます" } else { 100 };
println!("{}", result);実行結果:
error[E0308]: if and else have incompatible types