English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Rust言語の条件文はこの形式で使われます:
fn main() { let number = 3; if number < 5 { println!("条件がtrue"); } else { println!("条件がfalse"); } }
上記のプログラムには条件if文があり、この構文は他の多くの言語でよく見られますが、いくつかの違いがあります:まず、条件式number< 5 小括号で括る必要はありません(括る必要はありませんが、許可されていません);しかし、Rustのifには、一つの文をブロックに置き換えるルールがありません、一つの文をブロックに置き換えることは許可されていません。それにもかかわらず、Rustは従来のelseをサポートしています-if文法の:
fn main() { let a = 12; let b; if a > 0 { b = 1; } else if a < 0 { b = -1; } else { b = 0; } println!("bは{}", b); }
実行結果:
bは 1
Rustの条件表現はbool型でなければなりません、例えば以下のプログラムは誤りです:
fn main() { let number = 3; if number { // エラー、expected `bool`, found integer (rustc(E0)308) println!("Yes"); } }
C言語では、/C++ 言語の条件表現は整数で表され、0でない場合は真と見なされますが、このルールは多くのコードセキュリティに重視する言語では禁止されています。
前の章で学んだ関数体の表現と関連させて考えると:
if <condition> { ブロック 1 } else { ブロック 2 }
この文法の { ブロック 1 } および { ブロック 2 } 関数体の表現にできますか?
はいいですか?つまり、Rustではifを使用できます-else構造は三項条件演算子の表現に似ています (A ? B : C) の効果:
fn main() { let a = 3; let number = if a > 0 { 1 } else { -1 }; println!("number は {}", number); }
実行結果:
number は 1
注意:二つの関数体の表現の型は同じでなければなりません!また、elseおよびその後の表現ブロックを持つ必要があります。