가변 순회
Coddy Rust 여정의 Logic & Flow 섹션에 포함된 레슨 — 66개 중 12번째.
때로는 벡터 요소를 단순히 읽는 것 이상의 작업, 즉 요소를 수정해야 할 때가 있습니다. 이전 레슨에서는 값을 순회하고 읽는 방법을 보여주었지만, 이번 레슨에서는 가변 참조(mutable references)를 사용하여 순회하는 동안 요소를 변경하는 방법을 배웁니다.
반복하는 동안 요소를 수정하려면 for 루프에서 & 대신 &mut를 사용해야 합니다.
let mut numbers = vec![1, 2, 3, 4];
for number in &mut numbers {
*number = *number * 2;
}&mut numbers는 벡터에 대한 가변 참조(mutable reference)를 생성하며, 각 순회마다 개별 요소에 대한 가변 참조를 얻게 됩니다. * 연산자(역참조 연산자)는 참조가 가리키는 실제 값에 접근하고 이를 수정하는 데 사용됩니다.
이 패턴은 데이터를 제자리(in place)에서 변형할 때 매우 유용합니다. 수정된 값을 가진 새 벡터를 생성하는 대신, 기존 벡터를 효율적으로 업데이트할 수 있습니다. 내용을 변경하는 것이므로 이 작업이 동작하려면 벡터가 mut로 선언되어야 합니다.
위의 루프가 끝난 후, numbers에는 [2, 4, 6, 8]이 포함됩니다 - 각각의 기존 값이 그 자리에서 2배가 됩니다.
챌린지
쉬움가변 벡터 numbers를 받아 각 요소에 10을 제자리(in place)에서 더한 후, 수정된 벡터를 반환하는 함수 add_ten_to_all을 작성하세요.
각 요소를 직접 수정하려면 &mut을 사용한 가변 반복(mutable iteration)을 사용하세요. 실제 values에 접근하고 수정하려면 역참조 연산자 *를 사용해야 함을 기억하세요.
매개변수:
numbers(Vec<i32>): 수정할 정수형 가변 벡터
반환값: 각 요소에 10이 더해진 수정된 벡터 (Vec<i32>)
직접 해보기
fn add_ten_to_all(mut numbers: Vec<i32>) -> Vec<i32> {
// 여기에 코드를 작성하세요
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.