[Swift 문법] guard 구문

!·2022년 8월 18일
0

Swift 문법

목록 보기
23/27

빠른 종료

빠른 종료의 핵심 키워드는 guard 이다. guard 구문은 if 구문과 마찬가지로 Bool 타입의 값이 키워드 뒤로 따라오게 된다. 하지만, if 문과는 다르게 반드시 else 블록이 와야한다.
guard 구문은 뒤에 따라 오는 조건이 false인 경우 else 블록으로 들어가게 된다. 따라서 반드시 guard 구문 상위의 블록을 종료하는 코드, 예를 들어 continue, return, break, throw 등이 올수 있어야 하며 fatalError() 등으로도 종료시킬 수 있다.


if문과 비교

// if문
if i in 0...3{
	if i == 2{
    	print(i)
    }else{
    	continue
    }
}

// guard문
for i in 0...3{
	guard i==2 else{
		continue
	}
	print(i)
}

guard 구문을 사용하면 if 구문을 사용하는 것 보다 더 가독성이 좋게 구현할 수 있으며, if문은 예외처리를 else로 따로 해주어야 하기때문에 예외처리를 해야하는 경우 guard 구문을 사용하는 것이 훨씬 간편하다.


guard문과 옵셔널 바인딩

func greet(_ person: [String: String]){
	guard let name = person["name"] else{
    	return 
    }
    print("hello \(person["name"])!")
    
    guard let location = person["location"] else{
    	return
    }
    
    print("I home the weather is nice in \(location)!")
}

guard 를 통해 옵셔널 바인딩이 된 상수는 함수내에서 지역변수처럼 사용할 수 있다.


guard 구문에 구체적인 조건 추가

func enterClub(name: String?, age: Int?){
	guard let name: String, let age: Int = age, age > 19, name.isEmpty == false else{
    	print("you are too young to enter the club")
        return
    }
    
    print("Welcome \(name)")
}

다음과 같이 쉼표(,)를 통해 조건을 추가할 수도 있으며, 논리연산자(&&)를 통해서도 가능하며 둘은 동일한 역할을 한다.

profile
개발자 지망생

0개의 댓글