【Rust 基础入门】(03) | 语句、表达式与函数
1. 语句与表达式
在 Rust 中,语句和表达式是两个非常重要的概念,理解它们有助于写出更清晰的代码。
-
语句:执行某些操作但不返回值的代码。语句以分号
;
结尾。比如:let a = 10; // 这是一个语句,执行赋值操作但不返回值
你可以把语句想象成厨师在厨房里的动作,比如切菜、煮水,这些动作本身不会直接产生一道菜。
-
表达式:计算并返回一个值的代码。表达式没有分号。比如:
let b = { let x = 5; x + 1 // 这是一个表达式,返回 x + 1 的值 };
表达式就像是厨师做好的菜,比如切好的蔬菜、煮好的汤,它们是最终的产品,可以被后续使用。
小技巧:大部分情况下,区分语句和表达式的一个简单方法是看有没有分号。有分号的是语句,没有分号的是表达式。
2. 代码块表达式
在 Rust 中,代码块 {}
也可以是一个表达式,它会返回最后一个表达式的值。比如:
let y = {
let x = 3;
x + 1 // 这个代码块返回 x + 1 的值
};
println!("y is {}", y); // 输出 y is 4
注意:如果代码块的最后一行加了分号,它就变成了语句,不会返回值。比如:
let z = {
let x = 3;
x + 1; // 加了分号,变成了语句,不会返回值
};
println!("z is {:?}", z); // 输出 z is (),因为 z 是单元类型 ()
3. 单元类型 ()
Rust 中的单元类型 ()
类似于其他语言中的 void
,表示没有返回值。比如:
fn do_nothing() {
println!("Doing nothing!"); // 这个函数没有返回值,默认返回 ()
}
Rust 是一门静态类型语言,每个函数都必须有明确的返回类型。当函数没有返回值时,Rust 使用 ()
来表示“没有返回值”。这通常用于打印消息、写入文件等不需要返回值的操作。
4. if
表达式
在 Rust 中,if
语句也可以作为表达式使用,类似于其他语言中的三元运算符。比如:
let x = 5;
let result = if x > 3 {
"greater than 3"
} else {
"less than or equal to 3"
};
println!("result is {}", result); // 输出 result is greater than 3
5. 函数
函数是 Rust 中的基本构建块,用于执行特定任务。Rust 中的函数命名遵循 snake_case
风格。
-
带参数的函数:
fn add(a: i32, b: i32) -> i32 { a + b // 返回 a + b 的值 }
注意:函数的参数需要显式指定类型,这有助于 Rust 的类型安全性。
-
无返回值的函数:
fn greet() { println!("Hello, world!"); // 这个函数没有返回值,默认返回 () }
-
发散函数: 发散函数是指永远不会返回的函数,通常用于处理错误或不可恢复的情况。它们用
!
类型来标注。比如:fn panic_function() -> ! { panic!("This function will never return!"); // 这个函数会直接终止程序 }
发散函数通常用于处理不可恢复的错误,比如
panic!
宏会直接终止程序运行。
版权声明
本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。