벡터 순회하기
Coddy Rust 여정의 Logic & Flow 섹션에 포함된 레슨 — 66개 중 11번째.
이제 벡터를 생성하고 개별 요소에 접근하는 방법을 알게 되었으니, 벡터의 모든 요소를 체계적으로 처리하는 방법을 배워보겠습니다. for 루프는 이 작업에 완벽하며, 각 요소를 순서대로 방문할 수 있게 해줍니다.
벡터를 반복하는 기본적인 구문은 다음과 같습니다:
let names = vec!["Alice", "Bob", "Charlie"];
for name in &names {
println!("Hello, {}!", name);
}names 앞에 있는 &를 주목하세요. 이것은 벡터에 대한 참조를 생성하여, 벡터 자체의 소유권을 가져오지 않고도 각 요소를 읽을 수 있게 해줍니다. 각 반복마다 루프 변수 name을 통해 한 번에 하나의 요소에 접근할 수 있습니다.
for 루프는 자동으로 경계 검사(bounds checking)를 처리합니다. 수동 인덱싱과 달리, 존재하지 않는 요소에 실수로 접근하려고 시도할 일이 없습니다. 루프는 벡터에 포함된 요소의 수만큼 정확히 방문하므로 안전하고 편리합니다.
이 패턴은 어떤 타입의 벡터와도 함께 사용할 수 있습니다:
let scores = vec![85, 92, 78, 90];
for score in &scores {
println!("Score: {}", score);
}이 방식은 벡터의 값을 읽어야 할 때 모든 요소를 처리하는 가장 일반적이고 관용적인 방법입니다.
챌린지
쉬움벡터 numbers를 인자로 받아 모든 요소의 합을 반환하는 함수 sum_all_elements를 작성하세요.
for 루프를 사용하여 벡터를 순회하고 모든 요소의 합을 누적하세요.
매개변수:
numbers(Vec<i32>): 합산할 정수 벡터
반환값: 벡터 내 모든 요소의 합 (i32)
치트 시트
벡터를 반복하려면, 벡터에 대한 참조와 함께 for 루프를 사용하세요:
let names = vec!["Alice", "Bob", "Charlie"];
for name in &names {
println!("Hello, {}!", name);
}벡터 이름 앞의 &는 참조를 생성하며, 소유권을 가져오지 않고 각 요소를 읽을 수 있게 해줍니다. 루프는 자동으로 경계 검사(bounds checking)를 처리하고 벡터에 포함된 요소의 수만큼 정확히 방문합니다.
이 패턴은 모든 벡터 타입에서 작동합니다:
let scores = vec![85, 92, 78, 90];
for score in &scores {
println!("Score: {}", score);
}직접 해보기
fn sum_all_elements(numbers: Vec<i32>) -> i32 {
// 여기에 코드를 작성하세요
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.