Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

반복문(Loops) - 2부: for

매번 카운터 변수를 직접 만들고 1씩 증가시키는 과정은 조금 번거로울 수 있습니다. 사실 이런 작업은 프로그래밍에서 매우 자주 일어나는 일이죠. Rust에서는 값의 범위를 따라 더 간결하게 반복할 수 있는 for 루프를 제공합니다.

for 루프

for 루프는 반복자(Iterator)1에 들어있는 각 요소에 대해 코드 블록을 실행하는 방식입니다. 일반적인 형태는 다음과 같습니다.

for <요소> in <반복자> {
    // 반복 실행할 코드
}

범위(Ranges)

Rust 표준 라이브러리는 일련의 숫자들을 차례대로 훑을 때 사용할 수 있는 범위(Range) 타입을 제공합니다2.

예를 들어, 1부터 5까지의 숫자를 모두 더하고 싶다면 다음과 같이 작성할 수 있습니다.

let mut sum = 0;
for i in 1..=5 {
    sum += i;
}

루프가 돌 때마다 i에는 범위에 정의된 다음 값이 차례로 들어가며 본문 코드가 실행됩니다.

Rust에는 다섯 가지 종류의 범위 표현이 있습니다.

  • 1..5: 1부터 4까지 포함하는 범위입니다. 마지막 값인 5는 포함되지 않습니다. (반열린 범위)
  • 1..=5: 1부터 5까지 모두 포함하는 범위입니다. 마지막 값인 5도 포함됩니다. (닫힌 범위)
  • 1..: 1부터 해당 데이터 타입의 최대값까지 포함하는 무한 범위입니다.
  • ..5: 해당 데이터 타입의 최소값부터 시작하여 4까지 포함하는 범위입니다. 5는 포함되지 않습니다.
  • ..=5: 해당 데이터 타입의 최소값부터 시작하여 5까지 모두 포함하는 범위입니다.

시작값이 명시된 앞의 세 가지 범위는 for 루프에서 바로 사용할 수 있습니다. 나머지 두 가지는 나중에 다른 상황에서 쓰이는 것을 보게 될 것입니다.

참고로, 범위의 경계값에는 꼭 숫자 리터럴만 쓸 수 있는 것은 아닙니다. 변수나 표현식을 사용할 수도 있습니다.

let end = 5;
let mut sum = 0;

for i in 1..(end + 1) {
    sum += i;
}

더 읽어보기

Exercise

The exercise for this section is located in 02_basic_calculator/07_for


  1. 과정의 뒷부분에서 “반복자“가 정확히 무엇인지 배우게 될 것입니다. 지금은 반복할 수 있는 값들이 모여 있는 것으로 생각하셔도 충분합니다.

  2. 정수뿐만 아니라 문자(Characters)나 IP 주소 등 다른 타입들과 함께 범위를 쓸 수도 있습니다. 하지만 일상적인 프로그래밍에서는 정수 범위가 가장 흔하게 쓰입니다.