Menu
CoddyTech

范围指南

本课属于 Coddy Rust 学习旅程的“基础知识”单元。第 65 课,共 75 课。

在本课中,我们将进一步了解 range 的工作原理。

范围的基本语法:

  • start..end:创建从 start 到 end 的范围(不包含 end)
  • start..=end:创建从 start 到 end 的范围(包含 end)
  • ..end - 创建一个没有起始值、到 end 为止(不包含 end)的范围。for 循环不能使用它,但可以用它从索引 0 开始截取数组:&arr[..3] 表示前 3 个元素
  • ..=end - 创建一个没有起始值、到 end 为止(包含 end)的范围,用法相同:&arr[..=3] 表示前 4 个元素
  • start..:创建一个从 start 到正无穷的区间
  • ..:创建一个从负无穷到正无穷的区间

使用 .rev() 反向遍历范围:

  • (0..5).rev() - 4, 3, 2, 1, 0
  • (0..=5).rev() - 5, 4, 3, 2, 1, 0

使用 .step_by(n) 进行步进跳跃:

  • (0..10).step_by(2) - 0, 2, 4, 6, 8
  • (0..10).rev().step_by(2) - 9, 7, 5, 3, 1

例如:

// 基本的递增范围
for i in 0..5 { }
// 值:0、1、2、3、4
// 包含两端点的范围
for i in 0..=5 { }
// 值:0, 1, 2, 3, 4, 5
// 反向遍历范围
for i in (0..5).rev() { }
// 值:4,3,2,1,0
// 每次步进 2
for i in (0..10).step_by(2) { }
// 值:0、2、4、6、8
// 结合反向遍历和步进
for i in (0..10).rev().step_by(3) { }
// 值:9, 6, 3, 0
challenge icon

挑战

简单

给你两个数组,numbers1 和 numbers2。每个数组各打印一行:

  • 数组 1:从 numbers1 的最后一个位置开始,每次向前移动 3 个位置(索引为 25、22、19……),并打印每个位置上的值。
  • 数组 2:从最后一个元素到第一个元素遍历 numbers2,只打印能被 4 整除的值。

将每个值放在方括号中,值与值之间用 , 分隔,最后一个值后面不加任何内容:

Array 1: [26], [23], [20], ...
Array 2: [36], [36], ...

亲手试试

fn main() {
    let numbers1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26];
    let numbers2 = [17, 53, 24, 77, 84, 98, 24, 36, 89, 31, 36];
    print!("Array 1: ");
    // 在这里编写你的代码
    
    println!();
    print!("Array 2: ");
    // 在这里编写你的代码
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Rust 在线编译器