🍎 iOS/Swift

[Swift] Guard문과 If문

guard와 if의 차이는 guard는 항상 else문을 갖는다는 것이다.

⇒ else문을 강제하기 때문에 예외처리에 용이하다!

func guardTest(person: [String: String]) {
    guard let name = person["name"] else { // else 를 안쓰면 compile error
        print("person is nil")
        return
    }
    
    print("Name: \\(name)")
    
    guard let location = person["location"] else {
        print("location is nil")
        return
    }
    
    print("Location: \\(location)")
}

guardTest(person: ["name": "Jedi"])
print()
guardTest(person: ["location": "Seoul"])
print()
guardTest(person: ["name": "test", "location": "test"])

/*
Name: Jedi
location is nil

person is nil

Name: test
Location: test
*/

if문 대신 guard문을 사용하면 뭐가 좋을까?

⇒ 가독성이 좋다

  • if 문
if 조건문 {
	// 조건문 만족 시 실행
}
if 조건문 {
	// 조건문 만족 시 실행
} else {
	// 조건문 불만족 시 실행
}
  • guard 문 → 메인 로직에 따라 조건문 정의할 때 용이
guard 조건문(메인로직) else {
	// 조건문 불만족 시 실행
	return
} 

// 조건문 만족 시 실행