增加if-expression的例子

类似Scala的`if (x % 2 == 1) "odd" else "even"`,
或者Haskell的`if (x `mod` 2 == 1) then "odd" else "even"`。
pull/1014/head
Yifu Duan 2 years ago committed by GitHub
parent e8cce23425
commit eb6980fc47
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -12,7 +12,7 @@ fn add_with_extra(x: i32, y: i32) -> i32 {
语句会执行一些操作但是不会返回一个值,而表达式会在求值后返回一个值,因此在上述函数体的三行代码中,前两行是语句,最后一行是表达式。 语句会执行一些操作但是不会返回一个值,而表达式会在求值后返回一个值,因此在上述函数体的三行代码中,前两行是语句,最后一行是表达式。
对于 Rust 语言而言,**这种基于语句和表达式的方式是非常重要的,你需要能明确的区分这两个概念**, 但是对于很多其它语言而言,这两个往往无需区分。基于表达式是函数式语言的重要特征,**表达式总要返回值**。 对于 Rust 语言而言,**这种基于语句和表达式的方式是非常重要的,你需要能明确的区分这两个概念**, 但是对于很多其它语言而言,这两个往往无需区分。基于表达式是函数式语言的重要特征例如Scala、Haskell**表达式总要返回值**。
其实,在此之前,我们已经多次使用过语句和表达式。 其实,在此之前,我们已经多次使用过语句和表达式。
@ -97,9 +97,14 @@ fn main() {
fn ret_unit_type() { fn ret_unit_type() {
let x = 1; let x = 1;
// if 语句块也是一个表达式,因此可以用于赋值,也可以直接返回 // if 语句块也是一个表达式,因此可以用于赋值,也可以直接返回
if (x > 1) { // 类似三元运算符在Rust里我们可以这样写
let y = if x % 2 == 1 {
} "odd"
} else {
"even"
};
// 或者写成一行
let z = if x % 2 == 1 { "odd" } else { "even" };
} }
``` ```

Loading…
Cancel
Save