在 Rust 語言中的條件語句使這種格式的:
fn main() { let number = 3; if number < 5 { println!("條件為 true"); } else { println!("條件為 false"); } }
在上述程序中有條件 if 語句,這個語法在很多其它語言中很常見,但也有一些區(qū)別:首先,條件表達(dá)式 number < 5 不需要用小括號包括(注意,不需要不是不允許);但是 Rust 中的 if 不存在單語句不用加 {} 的規(guī)則,不允許使用一個語句代替一個塊。盡管如此,Rust 還是支持傳統(tǒng) 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 is {}", b); }
運(yùn)行結(jié)果:
b 為 1
Rust 中的條件表達(dá)式必須是 bool 類型,例如下面的程序是錯誤的:
fn main() { let number = 3; if number { // 報錯,expected `bool`, found integerrustc(E0308) println!("Yes"); } }
雖然 C/C++ 語言中的條件表達(dá)式用整數(shù)表示,非 0 即真,但這個規(guī)則在很多注重代碼安全性的語言中是被禁止的。
結(jié)合之前章學(xué)習(xí)的函數(shù)體表達(dá)式我們加以聯(lián)想:
if <condition> { block 1 } else { block 2 }
這種語法中的 { block 1 } 和 { block 2 } 可不可以是函數(shù)體表達(dá)式呢?
答案是肯定的!也就是說,在 Rust 中我們可以使用 if-else 結(jié)構(gòu)實(shí)現(xiàn)類似于三元條件運(yùn)算表達(dá)式 (A ? B : C) 的效果:
fn main() { let a = 3; let number = if a > 0 { 1 } else { -1 }; println!("number 為 {}", number); }
運(yùn)行結(jié)果:
number 為 1
注意:兩個函數(shù)體表達(dá)式的類型必須一樣!且必須有一個 else 及其后的表達(dá)式塊。