코딩하는 제리

[Swift] guard 문 (조건이 거짓이면 실행) 본문

iOS/SwiftUI

[Swift] guard 문 (조건이 거짓이면 실행)

JerryCho 2022. 1. 12. 08:18

 - 표현식이 거짓으로 판단될 경우 수행될 else 절을 반드시 포함.
 - else 절에 속한 코드는 현재의 코드 흐름을 빠져 나갈 수 있는 구문(return, break, continue, throw)을 반드시 포함해야함.
 - 또는 다른 함수를 else 코드 블록 안에서 호출할 수도 있음.
 - 특정 조건에 맞지 않을 경우 현재의 함수나 반복문에서 빠져 나갈 수 있도록 '조기 출구' 개념

guard <boolean 표현식> else {
  // 표현식이 거짓일 경우 실행될 코드
  <코드 블록을 빠져나갈 구문 (return, break, continue, throw)>
}
// 표현식이 참일 경우에 실행될 코드


- guard문은 값을 언래핑 하기 위해서 옵셔널 바인딩을 사용, 그 값이 10보다 작은지 검사
- 변수를 언래핑 할 수 없거나 그 값이 10보다 크면, else 절이 실행되어 에러 메시지 출력, 이 함수에서 빠져 나가도록 return 실행.
- 10보다 작은 값이면, guard문 아래에 있는 코드가 실행되어 그 값에 10이 곱해진 값이 출력.

func multiplyByTen(value: Int?) {
  guard let number = value, number < 10 else {
    print("10보다 크다.")
    return
  }
  print(number*10)
}

multiplyByTen(value: 3) // 30


- 언래핑된 number 변수를 guard문 밖에 있는 코드에서 사용할 수 있다👍👍
 - if문을 이용하여 언래핑된 변수는 사용불가.

var index: Int?
index = 3
var treeArray = ["A", "B", "C", "D"]
if let myValue = index {
  print(treeArray[myValue])
} else {
  // 여기서 옵셔널 바인딩으로 풀어진 myValue를 사용 못하지만
  // gaurd는 guard문 밖에서 사용가능하다.
}

'iOS > SwiftUI' 카테고리의 다른 글

[Swift] 클래스 메서드 (타입 메서드)  (0) 2022.01.12
[Swift] call by reference  (0) 2022.01.12
[Swift] 타입 검사, 범위 연산자, nil 합병 연산자  (0) 2022.01.12
[Swift] swift 형변환  (0) 2022.01.11
[Swift] swift 옵셔널  (0) 2022.01.07
Comments