1
realwangyibo 2016-12-28 12:26:13 +08:00
println!("Naive")是表达式,宏展开是表达式,表达式的值是 ()
表达式语句是在表达式后跟分号,将表达式变成语句, println!("Naive");是语句 |
2
realwangyibo 2016-12-28 12:42:37 +08:00
鄙人认为,表达式是无法被执行的,只有语句可以。
do_something_with_vector(&mut vector) 是函数调用表达式,只是相当于把干柴堆好。 do_something_with_vector(&mut vector); 是函数调用(表达式)语句,在堆好干柴的情况下点一把火。 ; 也是语句,只不过没有柴,点多少次火都没什么用。 |
3
rustacean OP @realwangyibo 谢谢您
|
4
peng1999 2016-12-29 19:19:46 +08:00 via Android
@realwangyibo 我倒觉得表达式的求值过程才是算程序的执行,分号只是在多个表达式顺序求值是使用。例如,最后一个语句是可以不写分号的。
|
5
realwangyibo 2016-12-29 20:28:40 +08:00 via iPhone
@peng1999 block 是表达式, block 的值取决于最后的表达式的值。如果最后的是语句,则 block 的值是(),所以最后不写分号的,是表达式而不是语句。
求值的方式是表达式规定的,但「求值」这个动作是表达式语句执行的。 |
6
sidgwick 2018-09-04 20:14:34 +08:00
@realwangyibo 求值也是表达求值吧, 语句是没有值的. 还有 Rust 里面是不是没有表达式语句这种说法?
|