Rust语法之if语句

     Rust中if并不复杂,但与传统系统语言相比,更像动态类型语言中的if。我们来介绍一下,让读者可以理解细微差异。

     if是一种一般概念的具体形式:分支。这个名称来自树的分支:一个决策点,根据所做的选择,可以选择不同的路径。

if而言,一个选择指出两条路:

     let x = 5;

     if x == 5 {
         println!("x is five!");
     }

     如果改变x的值,这一行就不会输出。更具体来说,如果if后面的表达式求值为true,那这个代码块就会执行。如果是false,就不会执行。
     如果想让在false的情况下执行点东西,那就使用else

     let x = 5;

     if x == 5 {
         println!("x is five!");
     } else {
         println!("x is not five :(");
     }

     如果还有另外一种情况,则使用else if:

     let x = 5;

     if x == 5 {
         println!("x is five!");
     } else if x == 6 {
         println!("x is six!");
     } else {
         println!("x is not five or six :(");
     }

    这是很标准的用法。不过,也可以这么做:

     let x = 5;

     let y = if x == 5 {
         10
     } else {
         15
     }; // y: i32

     上面能够(可能也应该)写成这样:

     let x = 5;

     let y = if x == 5 { 10 } else { 15 }; // y: i32

     这样是正确的是因为if是一个表达式。表达式的值是被选中的分支中最后表达式的值。一个没有else的if始终会导致空值(())。

### Rust 编程语言语法教程 #### 函数定义与调用 在 Rust 中,函数通过 `fn` 关键字定义。函数可以接受参数并返回值。如果函数不返回任何值,则不需要指定返回类型。以下是函数的基本结构[^1]: ```rust fn function_name(parameter1: Type, parameter2: Type) -> ReturnType { // 函数体 } ``` 例如,定义一个简单的加法函数: ```rust fn add(a: i32, b: i32) -> i32 { a + b } fn main() { let result = add(5, 7); println!("The sum is {}", result); // 输出 The sum is 12 } ``` #### 条件语句 Rust条件语句类似于其他编程语言中的 `if...else` 结构。需要注意的是,在 Rust 中,表达式的值可以直接用于控制流。 ```rust let number = 6; if number % 4 == 0 { println!("number is divisible by 4"); } else if number % 3 == 0 { println!("number is divisible by 3"); } else if number % 2 == 0 { println!("number is divisible by 2"); } else { println!("number is not divisible by 4, 3, or 2"); } ``` 上述代码展示了如何使用多个分支来处理不同的情况。 #### 循环结构 Rust 提供多种循环方式,包括无限循环 (`loop`)、固定次数循环 (`for`) 和基于条件的循环 (`while`)。 - **无限循环** 使用 `loop` 创建一个永不停止的循环,除非遇到 `break` 或者发生错误退出。 ```rust let mut counter = 0; loop { counter += 1; if counter == 10 { break; // 当计数器达到 10 时跳出循环 } } println!("Loop ended with value {}", counter); ``` - **遍历数组或范围** 使用 `for ... in ...` 遍历集合数据类型的元素[^4]。 ```rust let array = [1, 2, 3, 4, 5]; for element in array.iter() { println!("{}", element); } // 或者使用 range 表达式 for number in (1..=5).rev() { // 倒序打印从 5 到 1 println!("{}", number); } ``` #### 所有权机制 Rust 的核心特性之一是其独特的所有权系统,这使得程序能够在编译期就检测到许多潜在的运行时错误。每一段数据都有唯一的拥有者,并且当该拥有者超出作用域时会自动释放资源。 ```rust fn takes_ownership(some_string: String) { println!("{}", some_string); } // 这里 some_string 超出了作用域,因此被丢弃 fn gives_ownership() -> String { let s = String::from("hello"); s // 返回字符串的所有权给调用方 } fn main() { let s1 = gives_ownership(); takes_ownership(s1); // 下面这一行会产生编译错误,因为 s1 已经失去了所有权 // println!("{}", s1); } ``` #### 字符串插值与转义字符 Rust 支持标准的 C 风格转义序列以及更复杂的格式化操作。可以通过宏 `format!()` 构建动态字符串[^5]。 ```rust let name = "Alice"; let age = 30; println!("My name is {} and I am {} years old.", name, age); // 大括号需要双写才能作为普通字符显示 println!("This prints {{}} as plain text."); ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值