이번 편의 목표: 개수가 정해지지 않은 연체 일수를 Vec에 담고, 빌린 반복으로 합계를 구합니다.
배열의 길이는 타입에 고정됩니다. Vec은 실행 중에 늘어납니다. vec! 매크로로 처음 값을 넣고, push로 뒤에 추가합니다. 반복할 때 &days로 빌리면 반복이 끝나도 벡터를 소유한 채 길이 등을 볼 수 있습니다.
fn main() {
let mut days = vec![1, 0, 3];
days.push(2);
let mut total = 0;
for day in &days {
if *day > 0 {
total += day * 100;
}
}
println!("{total}");
println!("{}", days.len());
}1, 0, 3에 2가 추가됩니다. 0은 연체가 아니므로 건너뜁니다. 100, 300, 200을 더하면 첫째 줄은 600입니다. 둘째 줄은 길이 4입니다. for day in days처럼 참조 없이 반복하면 벡터의 소유권이 반복으로 옮겨가, 이후의 days.len()은 컴파일 오류가 됩니다.
vec의 타입은 첫 값들에서 추론됩니다. 여기서는 Vec<i32>입니다. 비어 있는 벡터로 시작하면 Vec::new()와 함께 타입을 적습니다.
직접 해 보기
push(2) 대신 push(5)를 쓰고 합계가 900인지 확인하세요.
해설
1, 3, 5만 요금이 있습니다. 100과 300과 500의 합은 900입니다. 길이는 그대로 4입니다.
COMMENTS
댓글 0
이 글에 대한 의견이나 질문을 남겨 주세요.
댓글은 구글이나 카카오로 시작한 뒤에 남길 수 있습니다.
등록된 댓글이 없습니다.