[iOS/Swift] Optional(옵셔널)

-inn·2022년 2월 20일
0

iOS

목록 보기
1/8
post-thumbnail

Optional (옵셔널)

Optional 이란 ?

: 값이 있을 수도 있고, 없을 수도 있다


Optional 필요한 이유

: nil의 가능성을 명시적으로 표현하기 위해 필요

  1. nil 가능성을 문서화 하지 않아도 코드만으로 충분히 표현 가능

    → 문서 / 주석 작성 시간 절약

  2. 전달 받은 값이 옵셔널이 아니라면 nil 체크를 하지 않더라도 안심하고 사용 가능

    → 효율적인 코딩 & 예외 상황을 최소화하는 안전한 코딩


Optional 타입 (enum + general)

enum Optional<Wrapped> : ExpressibleByNilLiteral {
	case none
	case some(Wrapped)
}
let optionalValue: Optional<Int> = nil
let optionalValue: Int? = nil

❗️Implicitly Unwrapped Optional

var optionalValue: Int! = 100
// 기존 변수처럼 사용 가능
optionalValue = optionalValue + 1
// nil 할당 가능
optionalValue = nil
// 잘못된 접근으로 인한 런타임 오류 발생
optionalValue = optionalValue + 1

❓Optional

var optionalValue: Int?  = 100
// nil 할당 가능
optionalValue = nil
// 기존 변수처럼 사용 불가 - 옵셔널과 일반 값은 다른 타입으므로 연산 불가
optionalValue = optionalValue + 1

Optional Unwrapping

  1.  ✅ Optional Binding (옵셔널 바인딩): nil 체크 + 안전한 값 추출 안전한 방법

    func printName(_ name: String) {
    	print(name)
    }
    var myName: String? = nil
    
    if let name: String = myName {
    	printName(name)
    } else {
    	print("myName == nil")
    }
  2. Force Unwrapping ( 강제 추출 ) : 옵셔널의 값을 강제로 추출

    func printName(_ name: String) {
    	print(name)
    }
    var myName: String? = "영인"
    printName(myName!) // 영인
    func printName(_ name: String) {
    	print(name)
    }
    var myName: String! = nil
    printName(myName!) // nil값이 전달되기 때문에 오류 발생

참고 사이트
https://youtu.be/RxScvfe1dyU

profile
☁️

0개의 댓글