访问向量元素
本课属于 Coddy Rust 学习旅程的“逻辑与流程”单元。第 10 课,共 66 课。
有了包含元素的向量后,你需要访问其中的各个值。Rust 提供了两种从向量中获取元素的方法,它们在便捷性和安全性之间各有取舍。
第一种方法使用带方括号的索引语法,与数组类似:
let numbers = vec![10, 20, 30, 40];
let first = numbers[0]; // 获取 10
let third = numbers[2]; // 获取 30虽然这种语法很常见,也很简洁,但它有一个很大的风险:如果你尝试访问不存在的索引,程序就会发生恐慌并崩溃:
let numbers = vec![10, 20, 30];
let invalid = numbers[5]; // 这会导致程序崩溃!第二种方法使用 .get() 方法,它可以提供安全访问:
let numbers = vec![10, 20, 30, 40];
let first = numbers.get(0); // 返回 Some(10)
let invalid = numbers.get(5); // 返回 None.get() 方法会返回一个 Option:如果索引存在,就返回 Some(value);如果不存在,就返回 None。这会迫使你处理元素可能不存在的情况,从而避免程序崩溃,让代码更加健壮。
挑战
简单编写一个函数 get_element_at,它接收一个向量 numbers 和一个索引 idx,并使用安全访问返回该索引处的元素。
使用 .get() 方法安全地访问元素。如果索引存在,就返回该值。如果索引不存在,就返回 -1 作为默认值。
参数:
numbers(Vec<i32>):要访问的向量idx(i32):要获取的索引
返回值:给定索引处的元素;如果索引不存在,则返回 -1 (i32)
亲手试试
fn get_element_at(numbers: Vec<i32>, idx: i32) -> i32 {
// 在这里编写代码
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Rust 在线编译器