# 반복문
스위프트에서의 반복문은 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{
// 코드처리
}
위 코드에서 반복상수 item
은 let item=1
, let item=2
...로 처리되므로 반복상수의 값에 대해 새로운 값을 대입하기 위해서는 변수 바인딩밖에 방법이 없다.
stride 함수
stride
함수는 정수의 시작점과 끝점, 간격을 설정하여 반복 가능한 객체를 반환한다.
for item in stride(from:1, to:5, by:2){
print(item);
}
to
가 through
이면 끝범위를 포함한 객체를 반환한다.
스위프트에서는 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를 한번 출력하고 반복문이 종료된다.