프로그래밍 [KOR]/Swift

Swift의 옵셔널

Ji-nun 2018. 10. 4. 16:09

1. 옵셔널의 뜻


  •값이 있을 수도, 없을 수도 있음을 표현

  •nil이 할당될 수 있는지 없는지 표현


1
2
3
4
5
6
7
8
9
10
11
// optionalParam에 nil이 할당될 수 있음
func funciton(optionalParam:Int?) {
    // ....
}
 
// optionalParam에 nil이 할당될 수 없음
func function(optianlParam:Int) {
    // ....
}
 
function(optionalParam: nil)
cs



2. 옵셔널을 쓰는 이유


  •명시적 표현

1. nil의 가능성을 코드만으로 표현가능

2. 문서/주석 작성 시간 절약


  •안전한 사용

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

2. 예외 상황을 최소화 하는 안전한 코딩

3. 효율적 코딩



3. 옵셔널 문법과 선언


  •옵셔널 문법 = enum + general


  •옵셔널 선언


1
2
3
4
5
6
7
enum Optional<Wrapped>:ExpressibleByNiliteral {
    case none
    case some(Wrapped)
}
 
let optionalValue: Optional<Int> = nil
let optionalValue: Int= nil
cs


  •옵셔널 표현


1. 느낌표(!)를 이용한 암시적 추출 옵셔널


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Implicitly Unwrapped Optional
var implicitlyUnwrappedOptionalValue: Int! = 100
 
switch implicityUnwrappedOptionalValue {
case .none:
    print("This Optional variable is nil")
case .some:
    print("Value is \(value)")
}
 
// 기존 변수처럼 사용 가능
implicitlyUnwrappedOptionalValue = implicitlyUnwrappedOptionalValue + 1
 
// nil 할당 가능
implicitlyUnwrappedOptionalValue = nil
 
// 잘못된 접근으로 인한 런타임 오류 발생
// implicitlyUnwrappedOptionalValue = implicitlyUnwrappedOptionalValue + 1
cs


2. 물음표(?)를 이용한 옵셔널


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Optional
var optionalValue: Int= 100
 
switch optionalValue {
case .none:
    print("This Optional variable is nil")
case .some(let value):
    print("Value is \(value)")
}
 
// nil 할당 가능
optionalValue = nil
 
// 기존 변수처럼 사용불가 - 옵셔널과 일반 값은 다른 타입이므로 연산불가
// optionalValue = optionalValue + 1
cs




❖출처: http://blog.yagom.net/


제 나름대로 생각을 정리하며 포스팅합니다.

정보전달에 있어 차질이 생기는 것을 우려해 나름대로 확실하게 검증을 하고 포스팅하려고 노력합니다.

본 포스팅에 잘못된 정보가 있거나 수정해야할 내용이 있다면 댓글 또는 아래의 이메일로 알려주시면 감사하겠습니다.

E-mail : silent_lhr@naver.com



공감은 로그인이 필요없습니다.

공감은 저에게 포스팅을 이어나갈 수 있는 힘이 됩니다.