환경은 macOS Sierra, Swift 3.0
Swift 3.0을 공부하면서 정리한 내용
2. 제어 구문
Swift에는 if, while, do-while 등 C와 동일하지만 모든 절을 {}로 감싸야 한다. 또한 추가적으로 for-in문이 도입되었다.
2.1 if문
if num >= 100 { # num이 100 이상이면 num에 5를 더한다.
num += 5
}
else if num >= 50 { # num이 50 이상이면 num에 2를 곱한다.
num *= 2
}
else { # 두 조건 모두 아니라면, num에 3을 곱한다.
num *= 3
}
print("num=\(num)")
각 조건식을 ()로 감쌀 필요가 없다. 조건식의 결과 값은 항상 Bool형이어야 한다.
2.2 while, do-while 문
별 다를게 없으므로 예제 코드만
# 피보나치...
var a = 1, b = 2
var i = 1, temp = 0
while i <= 20 { # i가 20이 될 때까지 수행
temp = a
a = b
b = b + temp
i += 1
}
print("a=\(a), b=\(b)")
var a = 1, b = 2
var i = 21, temp = 0
do {
temp = a
a = b
b = b + temp
i += 1
} while i <= 20
while문의 경우 조건을 먼저 검사한 이후에 코드를 실행하지만, do-while문은 한번 실행한 이후에 조건을 검사한다. 따라서 do-while은 무조건 한번은 실행된다.
2.3 print문
Swift 2.0 이전에는 print와 println을 구분하여 사용했지만, 2.0 이후(지금은 3.0) print만을 사용한다. print문 내부에 \를 활용하여 값을 출력할 수 있다.(나중에 다시 정리)
2.4 for-in문
Swift 2.0에서 3.0으로 업그레이드 되면서 바뀐 것 중 하나가 C-Style for문의 제거이다. 기존에는 C-Style for문과 for-in 모두를 지원하였으나, 현재에는 for-in문만 사용한다.
# 피보나치... while문에서 수정
var a = 1, b = 2
var temp = 0
for i in 0...20 { # i가 20이 될 때까지 수행
temp = a
a = b
b = b + temp
}
print("a=\(a), b=\(b)")
0…20은 0 <= i <= 20</br> 0..<20은 0 <= i < 20을 뜻한다.
2.5 switch문
Swift의 switch문은 다른 언어와 다른 특징들이 존재한다. 먼저, break문이 필요하지 않다는 것이다. 기존 언어의 switch문에서는 break문이 없을 시 뒤의 case까지 실행되었지만, Swift에서는 특정 조건에 만족하여 case를 실행한 이후에는 자동으로 종료된다. 두 번째 특징은 반드시 일치하는 조건이 존재하여야한다는 것이다. 일치하는 조건이 없을 시에는 에러문를 분출하기때문에 default문을 구현하는 것이 좋다. 마지막으로 case 조건식을 조금 더 자유롭게 구현할 수 있다는 점이다.
switch num { # num 대신 식도 가능
case 0:
# 실행할 구문
case 1:
# 실행할 구문
case 2:
# 실행할 구문
default:
# 실행할 구문
}
2.6 break, continue
break는 일반적으로 루프문을 빠져나올 때 사용하고 continue는 뒤의 부분은 건너뛰고 처음의 조건 검사부분으로 돌아갈 때 사용한다.
Swift에서는 break, continue에 레이블을 지정하여 특정 루프를 건너뛰거나 빠져나올 수 있다.