for-in 반복문은 어떤 컬렉션이나 숫자 범위에 포함된 일련의 항목들을 반복하는 데 사용되며, 사용하기 쉬운 반복문 옵션을 제공한다.
for 상수명 in 컬렉션 또는 범위 {
//실행될 코드
}
위 구문에서 상수명은 상수로 사용되는 이름으로, 반복문이 실행되는 컬렉션 또는 범위의 현재 항목을 담게 된다.
컬렉션 또는 범위에 있는 항목들은 반복문을 통해 참조된다.
for index in 1...5 {
print("Value of index is \(index)")
}
위 반복문은 닫힌 범위 연산자를 이용하여 1에서부터 5까지의 숫자 범위로 반복할 것을 선언하고 있다.
하지만 현재 항목에 대한 참조체를 저장하기 위해 상수명을 반드시 선언해야 하는 것은 아니다.
현재 항목에 대한 참조체가 for 반복문 안에서 불필요하다면 _ 문자로 대체 가능하다.
var cnt = 0
for _ in 1...5 {
//현재 값에 대한 참조체 불필요
cnt += 1
}
var myCnt = 0
while myCnt < 100 {
myCnt += 1
}
//while문이 myCnt 변수가 100보다 작은지를 평가.
//100보다 크다면 괄호 안의 코드를 건너뛰고 반복문 종료.
do .. while문을 대체한 반복문이다.
반복문 안의 코드가 언제나 적어도 한 번은 실행되야 하는 상황을 위해 사용된다.
var i = 10
repeat {
i -= 1
} while (i>0)
//i 변숫값이 0이 될 때까지 반복.
var j = 10
for _ in 0 ..< 100 {
j += j
if j > 100 {
break
}
print("j = \(j)")
}
//j의 갑싱 100을 넘을 때까지 반복을 계속 수행.
//100이 넘으면 반복문을 종료하고 반복문 다음 코드를 진행.
var i = 1
while i < 20 {
i += 1
if (i%2)!= 0 {
continue
}
print("i = \(i)")
}
//i의 값을 2로 나눈 나머지가 있으면 print 호출을 건너뛴다.
//Continue 구문이 실행되면 while 반복문의 시작 지점으로 돌아가서 다시 반복문 수행.
조건식이 true로 판단되면 구문 내의 코드가 실행된다.
조건식이 false로 판단되면 구문 내의 코드는 건너뛴다.
let x = 10
//x가 9보다 크므로 콘솔에 print 메시지 출력.
let x = 10
if x > 9 {
print("x is greater than 9!")
} else {
print("x is less than 9!")
}
let x = 9
if x == 10 {
print("x is 10")
} else if x == 9 {
print("x is 9")
} else if x == 8 {
print("x is 8")
}
guard 구문은 불리언 표현식을 포함하며, true일 때만 guard 구문 다음에 위치한 코드가 실행된다.
불리언 표현식이 false일 때 수행될 else 절을 반드시 포함해야 한다.
else 절의 코드는 반드시 현재의 코드 흐름에서 빠져나가는 구문을 포함해야 한다.
guard <조건문(불리언 표현식)> else { //조건문이 false일 때 실행될 코드 //<종료 구문> } //조건문이 true일 때 실행될 코드
func mutipleByTen(value: Int?) {
guard let number = value, number < 10 else {
print("Number is too high")
return
}
let result = number * 10
print(result)
}
위 함수는 옵셔널 형태의 정숫값을 매개변수로 받고 있다. guard 구문은 값을 언래핑하기 위해 옵셔널 바인딩을 사용하며, 그 값이 10보다 작은지를 판단한다.
값을 언래핑할 수 없거나 언래핑한 값이 9보다 큰 경우, else 절이 실행되어 에러 메시지를 출력하고 이 함수를 빠져나가기 위하여 return 구문을 실행한다.
옵셔널이 10보다 작은 값을 가지고 있다면 guard 구문 다음에 있는 코드가 실행되어 그 값에 10을 곱한 결과가 출력된다.
주의 : if 구문 내에서 언래핑된 변수는 if 구문 밖에서는 유효하지 않다!