seong_hye, the developer

Swift) 문법 정리 - guard문 본문

IOS

Swift) 문법 정리 - guard문

seong_hye 2022. 7. 19.

📘 Swift 문법 정리: guard 문

코드를 작성할 수록 if문이 깊어져서 불편했던 경험 없으신가요?

if문이 깊어지게 되면 지속적으로 들여써야해서 코드의 가독성이 안좋아져요.

이를 위해 사용하는 것이 바로

guard문 입니다.


🔹 문법 설명

'guard: 감시하다' 라는 뜻으로 조건을 일찍 감시하고 코드가 진행될 수 있도록 도와준다.

 

조건이 틀린 경우는 진행하던 작업을 일찍 끝내버리고, 우리가 원하는 조건의 경우에만 진행하도록 해준다.

if문은 '~면 ~해라' 라는 뜻이라면, guard는 '~아니면 끝내라' 라는 의미기 때문이다.

따라서 guard문은 '빠른 종료'를 해주는 것이 핵심이다. 

 

반드시 else 블록이 따라와야 하며, 그안 에서 return, break, continue, thorw 중 하나를 사용해야 한다.


🔹 기본 문법

func checkMoney(money: Int?)-> String {
    //money가 옵셔널이라면 벗기는 작업
	guard let money = money else { return "돈이 없습니다" } 	

    print("\(money)만큼 돈이 존재합니다.")
}

📌 설명

조건을 만족하지 않는 경우 -> else 블록 실행 -> 함수 종료

조건을 만족하는 경우  코드가 다음 줄로 넘어가서 계속 진행 가능


🔹  guard let  vs if let 

 

// if let
if let name {
	print(name)
} else { 
	return 
}

// guard let
guard let name else {return}
print(name)

📌 비교

비교 항목 if let guard let
중첩 구조 내부에 중첩 생김 외부 흐림이 깔끔함
흐름 조건 충족 시 실행 조건 불충족 시 탈출
변수 스코프 if let 내부에서만 사용 이후 코드 전체에서 사용 가능
스타일 선택적 처리에 유리 필수 조건 검증에 유리

➡️guard를 입력값 검증, 초기 상태 체크, 옵셔널 언래핑 등 필수 조건 체크에 많이 사용


🔹  여러 조건을 동시에 검사 가능

func login(id: String?, password: String?) {
	guard let id, !id.isEmpty else {
    	print("아이디를 입력하세요")
        return
    }
    
    guard let password, password.count >= 6 else {
    	print("비밀번호는 6자 이상이어야 합니다.")
        return
    }
    
    print("로그인 시도: \(id)/\(password)")
}

➡️단계별로 빠르게 조건을 체크하고 깨끗한 코드 흐름 유지 가능 


🔹  guard는 언제 쓰는 게 좋을까?

쓰임새 예시
입력값 체크 guard let 으로 옵셔널 안전하게 해제
비즈니스 조건 확인 guard point >= 0 else { return }
에러 상황 조기 종료 guard status == 200 else { throw ...}

'IOS' 카테고리의 다른 글

Swift) Alert vs Action Sheet  (0) 2022.07.19
Swift) AutoLayout vs Frame  (0) 2022.07.19
Swift) 문법 정리 - inout 키워드  (0) 2022.07.19
Swift)문법 정리 - 고차함수  (0) 2022.07.12
Swift) 문법 정리 - 클로저 (Closure)  (0) 2022.07.12
Comments