English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Rust 条件文

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およびその後の表現ブロックを持つ必要があります。