Swift - Swift의 guard문

 

Swift guard문 정리

guard문


  • guard문은 guard 뒤의 문장의 실행 결과가 참인 경우 guard문 이후 코드로 진행을 하고 거짓인 경우에는 else절을 실행한다.
  • if문과는 달리 반드시 else절이 필요하다.
  • 조건절에서 옵셔널 바인딩으로 값이 할당된 변수나 상수는 이후 문장에서 사용할 수 있다.
  • 조건절이 참이 아닌 경우 else절을 실행하는데 else절에서는 return, break, continue, throw로 코드 제어를 벗어나거나 fatalError(_:file:line:)같은 반환값이 없는 함수나 메서드를 호출할 수 있다.
  • guard문은 동일한 체크를 하는 if문에 비해 가독성이 높고, 마치 하나의 문장 처럼 근접한 문장에서 모든 처리를 할 수 있다.
func greet(person: [String: String]) {
	guard let name = person["name"] else {
		return
	}

	print ("Hello \(name)!")

	guard let location = person["location"] else {
		print("I hope the weather is nice near you.")
		return
	}

	print("I hope the weather is nice in \(location).")
}

greet(person: ["name": "John"])
// 출력
// Hello John!
// 두 번째 guard문은 location 값이 없어 조건이 false가 되고 따라서 else절이 실행된다.
// I hope the weather is nice near you.

greet(person: ["name": "John", "location": "Cupertino"])
// 출력
// Hello John!
// I hope the weather is nice in Cupertino