0
我正在通過Rust文檔(書)工作,並且對使用分號分隔語句感到困惑。是println!一個表達式或一個聲明?
在一個實例中它使用println!
宏作爲以分號結束的聲明:
use std::cmp::Ordering;
fn cmp(a: i32, b: i32) -> Ordering {
if a < b { Ordering::Less }
else if a > b { Ordering::Greater }
else { Ordering::Equal }
}
fn main() {
let x = 5;
let y = 10;
let ordering = cmp(x, y);
if ordering == Ordering::Less {
println!("less");
} else if ordering == Ordering::Greater {
println!("greater");
} else if ordering == Ordering::Equal {
println!("equal");
}
}
並採用match
表達式簡化它...
use std::cmp::Ordering;
fn cmp(a: i32, b: i32) -> Ordering {
if a < b { Ordering::Less }
else if a > b { Ordering::Greater }
else { Ordering::Equal }
}
fn main() {
let x = 5;
let y = 10;
match cmp(x, y) {
Ordering::Less => println!("less"),
Ordering::Greater => println!("greater"),
Ordering::Equal => println!("equal"),
}
}
的分號都消失時,這表明println!
不是一個聲明,而是一個表達式。我不明白爲什麼...我錯過了什麼?
'let'賦值還有語句嗎?因爲你甚至可以在Haskell中定義。 – ziggystar 2015-02-10 21:48:34
@ziggystar AFAIK'let'不是一個表達式。 (雖然'{let x = e1; e1}')。 – delnan 2015-02-10 22:01:55