2016-07-23 13 views
-1

このコードで変数aに空の値が表示されるのはなぜですか? また、{:?}の書式設定がないと、これはコンパイルされません。式の空白値

fn main() { 
    let mut a = 5; 
    let mut b = 6; 
    let n = 7; 
    let a = b = n; 
    println!("{:?}", a); 
} 

答えて

2

Cのような他の言語とは異なり、代入式は割り当てられた値に評価されません。割り当ては常に()と評価されます。

+0

しかし、bの値は7になりますが、どうなりますか? –

+1

代入式は '()'に評価されます。 'b = n'は代入式です。したがって、 'a'の値は'() 'です。 –

5

Cやその他の言語とは異なり、代入式(b = nここ)は、Rustに()を返します。

let a = ...;が実際にaを変異させる代わりに、以前のものを影と()が割り当てられている新しいaを作成していないことに注意してください。