//: Playground - noun: a place where people can play


import Swift


// optional 값이 '있을 수도 , 없을 수도 있음'


let optionalConstant: Int? = nil


// optional이 아닌 곳에 nil을 할당하면 에러가 발생한다.

// let someConstant: Int = nil


// optional = enum + general


/*

enum Optional<Wrapped> : ExpressibleByNilLiteral {

    case none

    case some(Wrapped)

}

*/


let optionalValue: Optional<Int> = nil

let optionalValue2: Int? = nil


// Implicitly Unwrapped Optional

// 암시적 추출 옵셔널

var optionalValue3: Int! = 100


switch optionalValue3 {

case .none:

    print("This Optional variable is nil")

case .some(let value):

    print("Value is \(value)")

}// Value is 100





// 기존 변수처럼 사용 가능

optionalValue3 = optionalValue3 + 1


// nil 할당 가능

optionalValue3 = nil


// 잘못된 접근으로 인한 런타임 오류 발생

// optionalValue3 = optionalValue3 + 1



// ?로 사용하는 사례

var optionalValue4: Int? = 101


switch optionalValue4{

case .none:

    print("This Optional variable is nil")

case .some(let value):

    print("Value is \(value)")

} // Value is 101


// 기존 변수처럼 사용불가 - 옵셔널과 일반 값은 다른 타입이므로 연산불가 , 에러발생

// optionalValue4 = optionalValue4 + 1


// nil할당 가능

 optionalValue4 = nil







'Swift > 기초&문법' 카테고리의 다른 글

스위프트 swift 구조체  (0) 2018.08.20
스위프트 swift 옵셔널 추출  (0) 2018.08.15
스위프트 swift 반복문  (0) 2018.08.14
스위프트 swift 조건문  (0) 2018.08.14
스위프트 swift 함수 고급  (0) 2018.08.14

+ Recent posts