ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (Swift) 옵셔녈[Optional] 정리 1/2
    Programing Language/Swift 2019. 10. 10. 12:04
    728x90
    반응형

    1. 옵셔널이란??

    • 값이 있을 수도, 없을 수도 있음을 표현
    • nil이 할당 될 수 있는지 없는지 표현
    // someOptionalParm에 nil이 할당 될 수 있다.
    func someFunction(someOptionalParam: Int?) {
           // ....
    }
    
    /// someOptionalParm에 nil이 할당 될 수 없다.
    func someFunction(someOptionalParam: Int) {
           // ....
    }
    
    someFunction(someOptionalParam: nil)
    // someFunction(someParam: nil) <- 함수의 넣는 값에 옵셔널 자료형이라고 선언하지 않으면 컴파일 오류가 발생한다.

    - 마지막 주석 처리된 부분을 보면 옵셔널 자료형로 함수에 넣은 값을 선언하지 않고 그 함수 값에 nil값을 넣으면 오류가 발생한다.

    2. 옵셔널을 쓰는 이유

    • 명시적 표현

              1. nil의 가능성을 코드만으로 표현가능
              2. 문서/주석 작성 시간 절약

    • 안전한 사용

              1. 전달받은 값이 옵셔널이 아니라면 nil 체크를 하지 않고 사용가능
              2. 예외 상황을 최소화 하는 안전한 코딩
              3. 효율적 코딩

    3. 옵셔널 문법과 선언

    • 옵셔널 문법 = enum + general (수업 후반에 다시 배울거에요)
    • 옵셔널 선언
    let optionalValue: Int? =nil
    

     

    • 옵셔널 표현

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

    // Implicitly Unwrapped Optional
    var implicitlyUnwrappedOptionalValue: Int! = 100
    
    switch implicitlyUnwrappedOptionalValue {
    case .none:
        print("This Optional variable is nil")
    case .some(let value):
        print("Value is \(value)")
    }
    
    // 기존 변수처럼 사용 가능
    implicitlyUnwrappedOptionalValue = implicitlyUnwrappedOptionalValue + 1
    
    // nil 할당 가능
    implicitlyUnwrappedOptionalValue = nil
    
    // 잘못된 접근으로 인한 런타임 오류 발생
    //implicitlyUnwrappedOptionalValue = implicitlyUnwrappedOptionalValue + 1

    - 암시적으로 옵셔널 자료 형을 사용하면(Int!

    implicitlyUnwrappedOptionalValue = implicitlyUnwrappedOptionalValue + 1 

    와 같이 기존의 변수와 비슷하게 사용 할 수 있다.

     

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

    // 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

    - 물음표 옵셔널 자료 형을 사용하면(Int?)

    implicitlyUnwrappedOptionalValue = implicitlyUnwrappedOptionalValue + 1 

    와 같이 기존의 변수와 비슷하게 사용 할 수 없다.

     

    옵셔널 자료형으로 선언한 변수는 차후에 변수의 값으로 nil값을 넣을 수 있지만,

     

    옵셔널 자료형으로 선언하지 않은 변수는 차후에 nil값을 넣을 수 없다.

    728x90
    반응형

    'Programing Language > Swift' 카테고리의 다른 글

    (Swift) 구조체 정리  (0) 2019.10.10
    (Swift) 옵셔녈[Optional] 정리 2/2  (0) 2019.10.10
    (Swift) 반복문  (0) 2019.10.10
    (Swift) 조건문 정리  (0) 2019.10.10
    (Swift) 함수 사용법 정리  (0) 2019.10.10
Designed by Tistory.