[Swift] if let vs guard let

김상우·2021년 10월 27일
0

2가지 옵셔널 바인딩

  • Swift의 옵셔널 바인딩 방법 2가지에 대해 정리해본다.
  1. if let 구문
  2. guard let 구문

Swift 코드 비교

// 두 가지의 프로토콜 선언
struct someStruct: someProtocol {
    init(value: Int) { }
}

struct someStruct2: someProtocol2 {
    init(value: Int) { }
}  

let struct1 = someStruct(value: 10)
let struct2 = someStruct(value: 20)

var someAny: Any = struct1	// 프로토콜 1번 연결
var someAny2: Any = struct2	// 프로토콜 2번 연결

// 1. if let 옵셔널 바인딩
if let result = someAny2 as? someProtocol {
  print("프로토콜을 준수합니다.")
}
else {
  print("프로토콜을 준수하지 않습니다.")
}	// -> 프로토콜을 준수하지 않습니다.


// 2. guard let 옵셔널 바인딩
func check(target: Any?) {
  guard let result = target as? someProtocol else {
     print("프로토콜을 준수하지 않습니다.")
     return
  }
}

check(target: someAny2)	// -> 프로토콜을 준수하지 않습니다.
  • 조건을 통해 nil 인 경우와 아닌 경우를 따로 처리하고 싶다면 if let문을 사용하는 것이 좋아보인다.
  • 에러 발생, 예외 상황 처리가 목적인 코드를 작성할 때는 guard let 문을 사용하는 것이 깔끔해 보인다.
profile
안녕하세요, iOS 와 알고리즘에 대한 글을 씁니다.

0개의 댓글