if, switch
var age = 19
var student = ""
if age >= 8 && age < 14 {
student = "초등학생"
} else if age < 17 {
student = "중학생"
} else if age < 20 {
student = "고등학생"
} else {
student = "기타"
}
student // 고등학생
if
문의 조건절에는 값이 정확하게 참 혹은 거짓으로 나오는 Bool
타입을 사용
swift 는 타입 검사가 엄격하기에, 타 언어에서 사용 가능한 아래와 같은 코드를 사용할 수 없음
var number = 0
if !number { // 컴파일 에러!
// ...
}
// error: Unary operator '!' cannot be applied to an operand of type 'Int'
대신, 이렇게 사용 가능
if number == 0 {
// ...
}
빈 문자열이나 배열 등을 검사할 때에도 명확하게 길이가 0인지를 검사
if name.isEmpty { ... }
if languages.isEmpty { ... }
Swift의 switch
구문은 조금 특별합니다. 패턴 매칭이 가능하기 때문입니다. 아래 코드는 위에서 작성한 if
문을 switch
문으로 옮겨본 것입니다.
switch age {
case 8..<14:
student = "초등학생"
case 14..<17:
student = "중학생"
case 17..<20:
student = "고등학생"
default:
student = "기타"
}
// 8..<14와 같이 범위Range 안에 age가 포함되었는지 여부를 검사
Guard
if문 보다 조건식에 따라서 하위 코드를 실행할지 말지를 빠르게 결정하기 때문에 메모리나 시간적인 면에서 우수함
func greet(person: String?) {
guard let name = person else {
print(’No name provided’)
return
}
print(’Hello \\(name)’)
}
greet (person: ‘about-tech’)
// 실행값 : Hello about-tech
greet (person: nil)
// 실행값: No name provided