# 반복문

스위프트에서의 반복문은 for ~ in 형식으로 이루어진다.

for a in 범위 또는 컬렉션{
    print(a);
}

for문의 반복상수를 언더바 처리하면 값의 처리가 생략된채로 반복문이 돌아가며, 이를 와일드카드 패턴이라고 한다.

for _ in 1...10{
    print("HI!"); // HI!가 10번 출력
}

반복대상에 배열과 문자열도 순회 가능하다. 튜플은 순회가 안됨.

for chr in "HELLO"{
    print(chr);
}

반복상수

스위프트 for 반복문의 반복상수라는 단어에서 알 수 있듯이 반복가능한 객체를 순회할때 새로운 값이 할당되는 공간은 상수로 처리된다.

for item in 1...5{
    // 코드처리
}

위 코드에서 반복상수 itemlet item=1, let item=2...로 처리되므로 반복상수의 값에 대해 새로운 값을 대입하기 위해서는 변수 바인딩밖에 방법이 없다.

stride 함수

stride함수는 정수의 시작점과 끝점, 간격을 설정하여 반복 가능한 객체를 반환한다.

for item in stride(from:1, to:5, by:2){
    print(item);
}

tothrough이면 끝범위를 포함한 객체를 반환한다.

스위프트에서는 while문과 repeat~while문이 있다.

while true{
    print("HI!");
}

repeat{
    print("HI!");
}while true;

repeat~while문은 다른 언어의 do~while문과 동일하게 작동한다.

# labeled statement

OUTER: for i in 0...3 {
    print("OUTER \(i)")
    INNER: for j in 0...3 {
        if i > 1 {
            print("  j :", j)
            continue OUTER
            //break OUTER
        }
        print("  INNER \(j)")
    }

}

스위프트는 labeled문을 사용할 수 있다. 반복문에 레이블을 달아놓고 continue및 break 흐름을 해당 레이블에 직접적으로 전달할 수 있다.

위 코드의 경우 i가 1보다 큰 값을 가질때 j : 0을 출력하고 OUTER 반복문을 다시 continue한다.

주석처리된 break OUTER를 풀면 i가 1보다 커지는 순간 j를 한번 출력하고 반복문이 종료된다.

# Reference

  1. 인프런 - 앨런 swift 문법 마스터 스쿨 (opens new window)