From eb6980fc475402e658b99feaad503de46f3f9a0e Mon Sep 17 00:00:00 2001 From: Yifu Duan Date: Sun, 4 Sep 2022 19:11:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0if-expression=E7=9A=84?= =?UTF-8?q?=E4=BE=8B=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 类似Scala的`if (x % 2 == 1) "odd" else "even"`, 或者Haskell的`if (x `mod` 2 == 1) then "odd" else "even"`。 --- src/basic/base-type/statement-expression.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/basic/base-type/statement-expression.md b/src/basic/base-type/statement-expression.md index 20bdfe9b..a3751a91 100644 --- a/src/basic/base-type/statement-expression.md +++ b/src/basic/base-type/statement-expression.md @@ -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() { let x = 1; // if 语句块也是一个表达式,因此可以用于赋值,也可以直接返回 - if (x > 1) { - - } + // 类似三元运算符,在Rust里我们可以这样写 + let y = if x % 2 == 1 { + "odd" + } else { + "even" + }; + // 或者写成一行 + let z = if x % 2 == 1 { "odd" } else { "even" }; } ```