本篇文章介绍了 Rust 语言中的语句与表达式的区别、代码块表达式、单元类型 ()、if 表达式,以及函数的基本用法,包括带参数函数、无返回值函数和发散函数。
在 Rust 中,语句和表达式是两个非常重要的概念,理解它们有助于写出更清晰的代码。
语句:执行某些操作但不返回值的代码。语句以分号 ;
结尾。比如:
let a = 10; // 这是一个语句,执行赋值操作但不返回值
你可以把语句想象成厨师在厨房里的动作,比如切菜、煮水,这些动作本身不会直接产生一道菜。
表达式:计算并返回一个值的代码。表达式没有分号。比如:
let b = {
let x = 5;
x + 1 // 这是一个表达式,返回 x + 1 的值
};
表达式就像是厨师做好的菜,比如切好的蔬菜、煮好的汤,它们是最终的产品,可以被后续使用。
小技巧:大部分情况下,区分语句和表达式的一个简单方法是看有没有分号。有分号的是语句,没有分号的是表达式。
在 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 是单元类型 ()
()
Rust 中的单元类型 ()
类似于其他语言中的 void
,表示没有返回值。比如:
fn do_nothing() {
println!("Doing nothing!"); // 这个函数没有返回值,默认返回 ()
}
Rust 是一门静态类型语言,每个函数都必须有明确的返回类型。当函数没有返回值时,Rust 使用 ()
来表示“没有返回值”。这通常用于打印消息、写入文件等不需要返回值的操作。
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
函数是 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!
宏会直接终止程序运行。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!