반응형
러스트의 for
문은 컬렉션(리스트, 벡터, 배열 등)을 반복하거나, 범위 값을 순회할 때 사용하는 반복문입니다. 다른 언어의 for-each
와 유사하며, 러스트의 안전성과 성능을 고려해 설계되었습니다.
특징
- 컬렉션 순회: 벡터, 배열, 이터레이터 등 반복 가능한 객체를 순회합니다.
- 범위 순회: 범위 연산자(
..
또는..=
)를 사용하여 숫자 범위를 반복할 수 있습니다. - 안전성: 인덱스 초과 등의 오류를 방지합니다.
- 명시적 이터레이터: 반복 가능한 객체는 자동으로 이터레이터로 변환됩니다.
기본 구조
for element in collection {
// element를 사용한 작업
}
예제 1: 범위 순회
범위를 순회하면서 반복 작업을 수행합니다.
fn main() {
for i in 1..5 { // 1부터 4까지 (5는 포함되지 않음)
println!("숫자: {}", i);
}
for i in 1..=5 { // 1부터 5까지 (5도 포함)
println!("숫자: {}", i);
}
}
실행 결과
숫자: 1
숫자: 2
숫자: 3
숫자: 4
숫자: 1
숫자: 2
숫자: 3
숫자: 4
숫자: 5
예제 2: 벡터 순회
벡터의 각 요소를 for
문으로 순회합니다.
fn main() {
let numbers = vec![10, 20, 30, 40, 50];
for num in &numbers {
println!("값: {}", num);
}
}
실행 결과
값: 10
값: 20
값: 30
값: 40
값: 50
예제 3: 인덱스와 값 함께 순회
enumerate
메서드를 사용하여 인덱스와 값을 함께 가져올 수 있습니다.
fn main() {
let items = vec!["사과", "바나나", "체리"];
for (index, item) in items.iter().enumerate() {
println!("인덱스: {}, 값: {}", index, item);
}
}
실행 결과
인덱스: 0, 값: 사과
인덱스: 1, 값: 바나나
인덱스: 2, 값: 체리
예제 4: 중첩된 for 문
중첩된 for
문을 사용하여 2차원 데이터 처리.
fn main() {
let matrix = vec![
vec![1, 2, 3],
vec![4, 5, 6],
vec![7, 8, 9],
];
for row in &matrix {
for value in row {
print!("{} ", value);
}
println!();
}
}
실행 결과
1 2 3
4 5 6
7 8 9
예제 5: 역순 순회
이터레이터의 rev
메서드를 사용하여 역순으로 순회할 수 있습니다.
fn main() {
for i in (1..=5).rev() {
println!("역순 숫자: {}", i);
}
}
실행 결과
역순 숫자: 5
역순 숫자: 4
역순 숫자: 3
역순 숫자: 2
역순 숫자: 1
예제 6: break와 continue 사용
break
와 continue
를 사용하여 루프를 제어할 수 있습니다.
fn main() {
for i in 1..10 {
if i == 5 {
println!("5를 만나서 루프 종료.");
break;
}
if i % 2 == 0 {
continue; // 짝수는 건너뜀
}
println!("홀수: {}", i);
}
}
실행 결과
홀수: 1
홀수: 3
홀수: 5
5를 만나서 루프 종료.
예제 7: for 문에서 값 변환
map
과 같은 이터레이터 메서드와 함께 사용하여 값을 변환할 수 있습니다.
fn main() {
let numbers = vec![1, 2, 3, 4, 5];
for squared in numbers.iter().map(|x| x * x) {
println!("제곱 값: {}", squared);
}
}
실행 결과
제곱 값: 1
제곱 값: 4
제곱 값: 9
제곱 값: 16
제곱 값: 25
요약
for
문은 컬렉션과 범위를 쉽게 순회할 수 있는 강력한 도구입니다.iter
,enumerate
,rev
등 다양한 이터레이터 메서드를 활용하면 더욱 유연한 작업이 가능합니다.- 안전하고 효율적인 반복 구조를 제공하며,
break
와continue
로 제어 흐름을 조정할 수 있습니다.
러스트의 for
문은 직관적이면서도 유연해 반복 작업을 깔끔하게 처리할 수 있습니다.
반응형
'언어 > Rust' 카테고리의 다른 글
[ Rust ] while - while 문으로 코드 반복 수행하기 (1) | 2024.11.16 |
---|---|
[ Rust ] loop - loop문으로 코드를 반복 수행하기 (1) | 2024.11.16 |
[ Rust ] if - if문으로 흐름제어 하기 (0) | 2024.11.16 |
[ Rust ] cargo --doc - 주석으로 프로젝트 문서 작성하기 (0) | 2024.10.23 |
[ Rust ] //, /**/, ///, //! - 주석 달기 (0) | 2024.10.23 |