나의 발자취

guard문 본문

앱 개발/iOS

guard문

달모드 2022. 5. 23. 23:24

guard(감시하다) : 조건이 맞는지 감시한다. 

 

사용 이유

if문을 사용할 때, 조건이 여러개가 된다면 들여쓰기가 많아져서 가독성이 떨어진다는 단점이 있다. 또한 여러개의 옵셔널 타입을 안전하게 언래핑할 수 있다. 코드의 영역이 변경되지 않고, guard문에서 선언된 변수를 아래문장에서 사용 가능하기 때문이다.

 

 

 

불만족하는 조건을 사전에 걸러내는 조건문

먼저 감시를 해서 조건을 만족하지 않으면 else문이 실행이 되며 종료시킨다. (early exit) (종료 조건; 함수 내애서는 return / true. 반복문에서는 break / continue. ) 

조건을 만족하면 else 문 밑의 코드들을 실행한다.

else문이 먼저 등장하는 if문이라고 생각하면 쉽다. 

 

 

 

형태

guard password.count >= else { return false }
print("조건에 맞습니다")

 

guard true else { return false } ⬇️

guard true else { return false } ⬇️

 

조건을 만족하면 아래줄로 내려가기때문에 .. if문의 else가 계속 들여쓰기가 연속되는 형태와는 다르다.

 

 

 

특징

 - 1) else문을 먼저 배치 - 먼저 조건을 판별하여 조기 종료(early exit)

 - 2) 조건을 만족하는 경우 코드가 다음 줄로 넘어가서 계속 실행

 - 3) 가드문에서 선언된 변수를 아래문장에서 사용 가능 (동일한 스코프로 취급) (guard let 바인딩 관련)

 

 

 

예시

// 반드시 코드를 종료해야하는 조기 종료의 조건이 필요하므로, 로컬스코프(함수/반복문) 내에서만 사용 가능

func check(words: String) -> Bool {
    
    guard words.count >= 5 else {
        
        print("5글자 이하입니다.")
        
        return false     // 종료 조건 - 함수 내에서는 return / throw
    }
    
    print("\(words.count)글자입니다.")
    
    return true
}



check(words: "안녕하세요")

'앱 개발 > iOS' 카테고리의 다른 글

옵셔널이란?  (0) 2022.05.24
print문  (0) 2022.05.23
입출력 inout 파라미터  (0) 2022.05.23
Swift :: for ... in stride / 함수 argument label, 가변 파라미터 / guard문  (0) 2022.05.16
WWDC18: iOS Memory Deep Dive  (0) 2022.05.09
Comments