当前位置:首页 > Rust > 正文

深入理解Rust语句与表达式(新手必看的Rust编程基础指南)

在学习 Rust语言入门 的过程中,很多初学者常常对“语句”和“表达式”的概念感到困惑。其实,这是理解 Rust代码结构 的关键一步。本文将用通俗易懂的方式,带你彻底搞懂 Rust语句与表达式区别,为你的 Rust编程基础 打下坚实根基。

深入理解Rust语句与表达式(新手必看的Rust编程基础指南) Rust语句与表达式区别 Rust编程基础 Rust语言入门 Rust代码结构 第1张

什么是表达式?

在 Rust 中,表达式(Expression) 是会产生一个值的代码片段。表达式不会以分号 ; 结尾(除非你故意丢弃其值)。

常见的表达式包括:

  • 字面量(如 42"hello"
  • 变量名(如 x
  • 函数调用(如 add(1, 2)
  • 运算(如 2 + 3
  • if 表达式、match 表达式等控制流结构

什么是语句?

语句(Statement) 是执行某个操作但不返回值的代码。语句通常以分号 ; 结尾。

常见的语句包括:

  • 变量声明(如 let x = 5;
  • 表达式后加分号(如 2 + 3; —— 此时它变成语句,值被丢弃)

核心区别:是否产生值

最关键的区别在于:表达式会返回一个值,而语句不会。

这一点在函数返回值中尤为重要。Rust 函数的最后一个表达式(不加分号)会自动作为返回值。

✅ 正确示例:使用表达式返回值

fn add(a: i32, b: i32) -> i32 {    a + b  // 这是一个表达式,自动返回结果}  

❌ 错误示例:不小心把表达式变成语句

fn add(a: i32, b: i32) -> i32 {    a + b;  // 错!加分号后变成语句,不再返回值}  // 编译错误:expected `i32`, found `()`  

if 是表达式!

在 Rust 中,if 不是语句,而是表达式!这意味着它可以返回值。

fn max(a: i32, b: i32) -> i32 {    if a > b {        a    } else {        b    }}  

注意:每个分支都必须返回相同类型的值,且不能加分号(否则就变成语句了)。

小结

  • 表达式 → 有值,不加分号(如 a + bif ... else ...
  • 语句 → 无值,通常加分号(如 let x = 5;
  • 函数体最后的表达式自动作为返回值
  • 加了分号的表达式会变成语句,值被丢弃

掌握 Rust语句与表达式区别,不仅能避免常见编译错误,还能写出更符合 Rust 风格的代码。希望这篇教程能帮助你在 Rust语言入门 的路上走得更稳!

关键词回顾:Rust语句与表达式区别Rust编程基础Rust语言入门Rust代码结构