티스토리 뷰

Swift

옵셔널(Optional)

unside 2020. 8. 20. 23:13

옵셔널이란?

  • 값이 있을 수도, 없을 수도 있음을 나타내는 표현

  • 변수 또는 상수의 값이 nil 일 수도 있다는 것을 의미

var name1: Optional<String> //명확한 옵셔널 표현
var name2: String? //축약한 옵셔널 표현

옵셔널추출

강제추출(forced unwrapping)

  • 간단하지만 런타임 오류가 발생할 수 있기 때문에 가장 위험한 방법

  • 옵셔널 값 뒤에 !를 붙여주면 강제추출 됨

  • 값이 nil이 안 들어간다고 확신을 할 경우 사용할 수 있지만 사용하지 않는 것이 공부하는데 도움이 될 것 같다

var name: String? = "Name"
name = nil
print(name!) //런타임 에러 발생

옵셔널 바인딩

  • 옵셔널에 값이 있는지 확인할 때 사용

  • 옵셔널에 값이 있다면 옵셔널에서 추출한 값을 일정 블록 안에서 사용할 수 있는 변수, 상수로 할당해서 사용이 가능하게 해 줌

var name1: String? = "Name1"
name = nil
if let name = name1 {
  print(name) //name이 nil의 경우엔 if문에 걸리지 않고 넘어감
}

var name2: String? = "Name2"
if let name = name1, name2 != nil { // ,를 활용해 두가지 변수는 활용할 수 있음
  print("\(name)과 \(name2)")
}

암시적 추출 옵셔널

  • nil은 할당이 가능하지만 nil인 상태에서 접근하면 런타임 에러가 발생함

  • 값의 정의는 여전히 옵셔널

var name1: String! = "Name1"
name1 = nil //nil 할당은 가능
print(name1) //런타임 에러 발생

if let name = name1 { //여전히 옵셔널이기 때문에 바인딩 가능
  print(name)
}

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함