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