STUDY/Swift & iOS

Swift 문법 기초 3

sinawi95 2022. 6. 13. 20:49
728x90

옵셔널

값이 있을수도 없을수도 있음

let opt: Int? = nil
  • nil 가능성이 있는 곳에서 직접 확인 하지 않아도 사용할수 있음
  • nil 가능성을 문서나 주석으로 남기지 않아도됨

예시)

func func1(optParam: Int?) {}
func func2(param: Int) {}

func1(optParam: nil) // ok
func2(param: nil) // error

optional = enum + general

enum Optional<Wrapped> : ExpressibleByNilLiteral {
	case none
	case some(Wrapped)
}

let optVal: Optional<Int> = nil // 원형
let optVal2: Int? = nil // 가능

?: 옵셔널

  • 기존 변수처럼 사용할수 없음

!: 암시적 추출 옵셔널(implicitly wrapped optional)

  • 기존 변수처럼 사용할수 있지만 nil 값이 들어가는 경우 런타임 에러 발생

옵셔널 값 추출

옵셔널 바인딩(binding)

  • nil 체크 및 안전한 값 추출

if-let

var val1: String? = "dg"
var val2: String? = nil
if let name = val1, let friendName = val2 {
	print("\\(name) and \\(friendName)")
}
// let의 값들이 모두 nil이 아닌 경우에만 출력

옵셔널 강제 추출

  • ! 사용
  • 권장하는 방법은 아님
func printFunc(name: String) {
	print(name)
}

var name: String? = "dg"
printFunc(name!) // ok

name = nil
printFunc(name!) // error

'STUDY > Swift & iOS' 카테고리의 다른 글

Swift 문법 기초 6  (0) 2022.06.25
Swift 문법 기초 5  (0) 2022.06.21
Swift 문법 기초 4  (0) 2022.06.20
Swift 문법 기초 2  (0) 2022.06.09
Swift 문법 기초 1  (0) 2022.06.07