본문 바로가기
모바일앱/Swift

Day05 Unwrap_Optional

by GeekCode 2021. 11. 29.
반응형

// 옵셔널이란?

옵션이 있을 수도 있고 없을 수도 있다-> 값이 있을 수도 없을 지 모른다.

 

#1 강제 언래핑

#2 if let

//만약 값이 있다면 otherVariable에 넣어 사용하겠습니다.

if let otherVariable = someVariable {

    print("언래핑되었다. 즉 값이 있다. otherVariable: \(otherVariable)")

} else {

    print("값이 없다.")

}

// -> 언래핑되었다. 즉 값이 있다. otherVariable: 90

 

#3 guard let

func unwrap(parameter: Int?){

    print("unwrap() called")

    // 값이 없으면 리턴해버리겠다.

    // 즉 지나간다.

    guard let unWrappedParam = parameter else {

        return

    }

    print("unWrappedParam: \(unWrappedParam)")

}

 

var firstValue : Int? = 30

var secondValue : Int? = 50

print("firstValue: \(firstValue)")

print("secondValue: \(secondValue)")

 

unwrap(parameter: firstValue)

unwrap(parameter: secondValue)

 

import UIKit


// 옵셔널이란?
// 옵션이 있을 수도 있고 없을 수도 있다
// -> 값이 있을 수도 없을 지 모른다.
var someVariable: Int? = nil
// ?가 있으면 값이 없다는 뜻

if someVariable == nil {
    someVariable = 90
}

print("someVariable: ", someVariable)
//-> someVariable:  Optional(90)

// optional(90)로 표기되어 나옴 -> 보기 불편
// 확실하게 하기위해 unwrap과정을 가짐
// 언래핑 -> 감싸져 있는 것을 벗기는 것

//#1 if let
//만약 값이 있다면 otherVariable에 넣어 사용하겠습니다.
if let otherVariable = someVariable {
    print("언래핑되었다. 즉 값이 있다. otherVariable: \(otherVariable)")
} else {
    print("값이 없다.")
}
// -> 언래핑되었다. 즉 값이 있다. otherVariable: 90

someVariable = nil
//someVariable이 비어있으면 -> 값이 없으면 기본값으로 이것을 넣겠다.
let myValue = someVariable ?? 10
print("myValue: \(myValue)")
//-> myValue: 10


//#2 guard let

func unwrap(parameter: Int?){
    print("unwrap() called")
    // 값이 없으면 리턴해버리겠다.
    // 즉 지나간다.
    guard let unWrappedParam = parameter else {
        return
    }
    print("unWrappedParam: \(unWrappedParam)")
}

var firstValue : Int? = 30
var secondValue : Int? = 50
print("firstValue: \(firstValue)")
print("secondValue: \(secondValue)")

unwrap(parameter: firstValue)
unwrap(parameter: secondValue)

 

 

반응형

'모바일앱 > Swift' 카테고리의 다른 글

Day09 generic  (0) 2021.12.03
Day08 function parameter  (0) 2021.12.03
Day07 property_observer  (0) 2021.12.02
Day06 class_struct  (0) 2021.11.30
Day04 For_Loops  (0) 2021.11.29
Day03: enum  (0) 2021.11.29
Day02 : For-each(자료 보강 필요)  (0) 2021.11.28
Day01 : Conditional Statements_If  (0) 2021.11.26