향상된 for 루프
Coddy Rust 여정의 기초 섹션에 포함된 레슨. 75개 중 66번째.
배열을 순회하는 방법에는 여러 가지가 있습니다. 그중 몇 가지를 살펴보겠습니다:
다음 배열을 살펴보세요:
let numbers = [1, 2, 3, 4, 5];직접 반복자:
for num in numbers.iter() {} // 값: 1, 2, 3, 4, 5
인덱스 및 값:
for (index, value) in numbers.iter().enumerate() { } // 값: (0,1), (1,2), (2,3), (3,4), (4,5)
특정 크기의 슬라이스:
for chunk in numbers.chunks(2) { } // 값: [1,2], [3,4], [5]각 청크는 슬라이스이므로, 슬라이스 메서드를 사용할 수 있습니다. 예를 들어
chunk.len()은 해당 청크에 요소가 몇 개 있는지 반환합니다. 배열의 요소 수가 크기로 나누어떨어지지 않으면 마지막 청크는 더 작을 수 있습니다.
.chunks()에 .enumerate()를 이어서 호출하면 인덱스와 청크를 동시에 얻을 수도 있습니다:
for (i, chunk) in numbers.chunks(2).enumerate() { }
// 값: (0,[1,2]), (1,[3,4]), (2,[5])여기서 .chunks(2)는 먼저 슬라이스를 생성하고, 그다음 .enumerate()가 각 슬라이스에 카운터를 붙이므로 i는 청크 인덱스이고 chunk는 슬라이스입니다.
변경하면서 순회하기:
let mut numbers = [1, 2, 3, 4, 5]; for num in numbers.iter_mut() { *num *= 2; } // 배열은 [2, 4, 6, 8, 10]이 됩니다
챌린지
쉬움항목과 가격이 포함된 쇼핑 목록을 처리하고, 데이터의 여러 보기를 제공하는 프로그램을 작성하세요.
프로그램은 다음을 수행해야 합니다.
- 각 항목 번호와 가격을 출력하세요(
enumerate사용).Item N: $Price형식으로 표시하세요(예:Item 1: $2.75). - 가격을 두 개씩 묶어(
chunks사용) "묶음 상품"으로 출력하세요. 묶음에 항목이 2개 있으면 합계를 출력하세요:Bundle N: $Price1 + $Price2 = $Sum. 항목이 1개뿐이면 다음을 출력하세요:Bundle N: $Price. - 모든 가격에 10% 할인을 적용하세요(
iter_mut사용). - 할인 적용 후의 최종 가격을 각각 새 줄에 소수점 이하 2자리까지 표시하여 출력하세요(예:
$2.48).
힌트: 반복자를 연결할 수 있습니다. 예를 들어, prices.chunks(2).enumerate()를 사용하면 청크 인덱스와 청크 슬라이스를 한 번에 얻을 수 있습니다. 각 chunk는 슬라이스이므로 chunk.len()을 호출하거나 chunk[0], chunk[1] 등으로 인덱싱할 수 있습니다.
가격의 예상 출력 형식:${:.2}를 사용해 가격을 소수점 이하 2자리까지 표시하세요.
정확한 텍스트는 Bundle 4: $7.90입니다.
직접 해보기
fn main() {
let mut prices = [2.75, 1.50, 5.00, 3.5, 4.1, 2.25, 7.9];
println!("Original Prices:");
// TODO: enumerate()를 사용해 각 항목의 번호와 가격을 출력하세요
// 힌트: prices.iter().enumerate()는 (index, &price) 쌍을 반환합니다
// {:.2}를 사용해 가격을 소수점 이하 2자리로 표시하세요. 정확한 형식은 지침을 참고하세요
println!("\nBundle Deals:");
// TODO: chunks(2)와 enumerate()를 연결해 사용하세요: prices.chunks(2).enumerate()
// 이렇게 하면 (index, chunk) 쌍이 반환됩니다. 각 chunk는 슬라이스이므로 chunk.len()으로 크기를 알 수 있습니다
// chunk.len() == 2이면 다음을 출력하세요: "Bundle 1: $2.75 + $1.50 = $4.25"
// chunk.len() == 1이면 지침에 설명된 단일 항목 줄을 출력하세요
// {:.2}를 사용해 모든 가격을 소수점 이하 2자리로 표시하세요
// TODO: iter_mut()를 사용해 모든 가격에 10% discount를 적용하세요
// 힌트: 각 *price에 0.9를 곱하세요
println!("\nPrices after 10% discount:");
// TODO: 할인된 각 가격을 소수점 이하 2자리로 표시해 출력하세요
// 예상 출력 형식은 지침에 나와 있습니다
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
직접 연습해 보세요: 온라인 Rust 컴파일러