[ Swift ] Optional

2020. 10. 5. 17:49Swift

 

 
var petName: String?
petName = "Mango"
print(petName)

petName 변수를 String 또는 nil 값으로 처음에 선언했다.

petName = "Mango" 로 선언했다 .

petName 을 출력하면 wrap 된 값이 출력되므로

Optional("Mango") 

다음과 같은 문구가 출력된다.

var petName: String?
petName = "Mango"
print(petName)
petName = nil//unwrapping optional

var result: Int? = 30
print(result)

 

 

petName 을 nil 로 unwrapping 시켜준다.

result 값을 Int 형 Optional 값으로 선언하고 출력을 하면

Optional("30")

다음과 같이 출력된다. 위의 두개의 예시는 선언할 수 있는 양식에 대해 두가지 타입이 있다고 이해할 수 있다.

 

var petName: String?
petName = "Mango"
print(petName)
petName = nil//unwrapping optional

var result: Int? = 30
print(result)
petName = "Potato"//"Mango"
var petAge: Int? = 2
var unwrappedPetName = petName!//느낌표 < force unwrap(Dangerous!) the optional
print ("The pet's name is \(unwrappedPetName)")

if petName != nil {
	let unrappedPetName = petName
}


if let petName = petName,// shadowing
    let petAge = petAge {
        print("The pet is \(petName) and they are \(petAge)")
    }
 else{
    print("No pet name or age")
}

var optionalInt: Int? = nil//10
var requiredResult = optionalInt ?? 10 // 0 is default value

unwrappedPetName 변수는 petName의 값을 unwrapping 시켜준것이다. 느낌표로 벗겨낼 수 있다. 즉 petName으로 선언했던 "Potato"가 unwrappedPetName이다.

 

if petName != nil 이면 ubrapping 시켜준다는 의미이다.

 

shadwing 이란 기능은 나중에 더 자세히 다룰것이다.

petName이란 변수가 if 블럭 안에서 만 변수로 다뤄진다는 내용인거 같은데 나중에 자세히 알아보도록하자 !

//tenary Optional

let hasAllergies = true
let dogName : String?
dogName = hasAllergies ? nil : "Mango"// 순서가 바뀌면 성립되지 않는다.
print(dogName)

 

'Swift' 카테고리의 다른 글

[ Swift ] DispatchQueue  (0) 2020.10.21
[ Swift ] http data 가져오기 data trimming  (0) 2020.10.15
[ Swift ] @IBAction 소스 분석해보기  (0) 2020.10.14
[ Swift ] Tuples  (0) 2020.10.06
[ Swift ] if, guard, switch문 사용방법  (0) 2020.09.29