Post

Swift - 옵셔널(Optional)이란?

Swift - 옵셔널(Optional)이란?

옵셔널(Optional)이란?

  • nil을 담을 수 있는 타입
    • nil: 아무런 값도 없다는 의미로 사용됨.
  • 값이 있을수도 있고 없을 수도 있음.

선언 방식 및 초기화 방식

1
var ex: dataType? = value

예시

1
2
var ex: String? = "Hello World!"
print(ex)

결과

1
Optional("Hello World!")

위 예시에서 확인할 수 있듯이 Optional이라는 객체에 값이 감싸져있음.
이것을 옵셔널 래핑이라고 함.

일반적으로 옵셔널 변수는 연산이나 결합을 사용할 수 없음.
이런 기능들을 사용하기 위해선 Optional 객체를 벗겨야하는데, 이것을 옵셔널 언래핑이라고 함.

언래핑을 위한 방법은 아래와 같이 여러가지가 존재함.

강제 언래핑

  • 옵셔널 객체를 강제로 언래핑 시키는 방법
  • 만약 nil일 경우 오류가 발생함.

예시

1
2
var ex: String? = "Hello World!"
print(ex!)

결과

1
Hello World!

옵셔널 바인딩

  • 조건식을 통해서 옵셔널 변수를 일반 변수에 바인딩시켜 안전하게 처리 가능함.
  • 만약 값이 nil일 경우 false로 처리되어 else 블록이 실행됨.

if문 예시

1
2
3
4
5
6
7
var ex: String? = "Hello World!"

if let value = ex{
    print(value)
}else{
    print("값이 없음")
}

결과

1
Hello World!

if문을 통해 바인딩할 경우 if문 내에서만 사용이 가능함.

guard문 예시

1
2
3
4
5
6
7
8
9
10
func ex(str: String?){
    guard let value = str else{
        print("값이 없음")
        return
    }
    
    print("value : \(value)")
}

ex(str: "Hello World")

결과

1
value : Hello World

guard문을 통해 바인딩을 처리할 경우 if문과는 달리 guard문을 통과한 시점부터 함수가 종료되기 전까지 사용이 가능함

기본값 제공

  • 만약 옵셔널 변수가 nil일 경우 기본값으로 제공해줄 값을 지정하여 안전하게 언래핑시킬 수 있음.

예시

1
2
var ex: String? = nil
print(ex ?? "Hello World")

결과

1
Hello World

자동 언래핑

  • 비교 연산자를 사용할 때 컴파일러에 의해 자동으로 옵셔널이 언래핑됨.
    • 만약 값이 nil일 경우 false를 반환함.

예시

1
2
3
4
5
6
7
var ex: Int? = nil

if ex == 10{
    print("10임")
}else{
    print("값 없음")
}

결과

1
값 없음

암시적 언래핑

  • 옵셔널 타입이지만, 사용할 떈 옵셔널이 아닌 일반 변수처럼 사용할 수 있도록 옵셔널 변수를 선언할 수 있음.
  • 결합이나 연산을 할 때 자동으로 언래핑됨.

예시

1
2
3
4
5
6
var ex: String! = "Hello World"
var ex2: String = ex
print(ex2)

var ex3: Int! = Int("10")
print(ex3 + 10)

결과

1
2
Hello World
20
This post is licensed under CC BY 4.0 by the author.