주어진 조건에 의해 특정 코드 블록을 반복적으로 실행할 수 있게 해주는 구문을 반복문이라고 한다. 프로그래밍에서 코드 블록의 반복을 루프(Loop)라고 부르고 반복되는 횟수를 루프 횟수라고 부른다. 스위프트에선 루프 횟수가 정해져 있는지를 기준으로 두 가지 방식의 반복문이 존재한다.

for 반복문은 in 키워드와 함께 사용되어 정해진 회수만큼 주어진 코드 블록을 반복해 실행한다. while 반복문은 주어진 조건이 false가 될 때까지 계속해서 구문을 반복 실행하는 특성이 있다.

for ~ in 구문

for <루프 상수> in <순회 대상> {
		<실행할 구문>
}

for ~ in 구문을 구성하는 것은 루프 상수, 순회 대상, 실행할 구문 총 3개로 이루어져 있다. 여기서 가장 중요한 것은 순회 대상이다. 순회 대상은 주로 순서를 가지는 집단 자료형 혹은 범위를 가지는 데이터 등이 사용되는데, 이 대상의 길이나 포함하고 있는 아이템의 개수만큼 구문이 반복 수행된다. 순회 대상으로 사용할 수 있는 데이터 타입에는 다음과 같은 것들이 있다.

여기서 범위 데이터가 의미하는 것은 범위 연산자에 의해 규칙적인 간격으로 나열된 정수들의 모음이며, String은 Character타입의 데이터들이 모여 이루는 집단적 성격의 데이터다.

루프 상수는 구문이 반복될 때마다 순회 대상이 포함하고 있는 개별 아이템들을 차례로 넘겨받아 임의로 저장하고, 실행 블록내에서 사용할 수 있도록 해주는 역할을 한다. 이 객체는 루프 구문이 순회할 때마다 자동으로 재선언 되므로 let키워드를 통해 직접 선언할 필요가 없다는 점에 유의해야 한다.

실행 구문은 {} 사이에 작성된다. 중괄호 {}로 둘러싸인 영역을 보통 코드 블록(Code block)이라고 하는데, 다른 구문과 영역을 나누는 용도로 사용된다. 여기선 반복 실행될 구문의 범위를 표시하는 역할을 한다. 즉, for ~ in 구문의 {}블록 내에 작성된 구문만 반복해 실행된다는 의미다.

for row in 1 ... 5 {
		print(row)
}
// 실행결과
1
2
3
4
5

닫힌 범위 연산자로 작성된 범위 데이터 1 … 5는 [1, 2, 3, 4, 5]의 데이터를 순서대로 생성한 후, row에 최초로 1이 대입되고 실행구문 print(row)가 실행된다. 그 후 2, 3, 4, 5가 위와 같은 과정을 거쳐 최종적으로 1, 2, 3, 4, 5가 출력되게 된다.