► Swift
[작성중] [Swift] optional unwrapping, 강제추출(forced upwrapping)
다람트리
2023. 6. 28. 20:36
반응형
두서없이 써논 글입니다!
/* 1. optional unwrapping */
//옵셔널타입 형태
let a:Int? = nil
print(a) //nil
print(type(of:a)) //Optional<Int>
/*
상수a는 Int 자료형이 아닌, Optional Int 자료형이다.
즉,
Optional 자료형을 사용하기 위해선
Optional이란 포장지를 까주고 써야 한다.
*/
// Optional 자료형으로 안까주면..?
let a1: Int?
a1=4
var myInfo = "내 나이는 \(a1)살 입니다."
//"내 나이는 Optional(4)살 입니다."
//nil 예제 (optional unwrapping할 필요가 없음.)
let a2:Int? = nil
print("a==\(a2)") //a==nil
let a3:Int? = 4
print("b==\(a3)") //b==Optional(4)
/* 2. 강제추출(forced upwrapping) */
//강제추출 연산자 !(느낌표)
var myInfo1 = "내 나이는 \(a1!)살 입니다." //"내 나이는 4살 입니다."
//nill 주의
let a4:Int? = nil
//print(a4!)
//err: error: Execution was interrupted, reason: EXC_BREAKPOINT (code=1, subcode=0x18bd55e10).
/*
에러가 뜨면 감사한거임
만약 런타임 에러가 나면, 비정상 종료 버그가 생겨버림
*/
// nill인지 아닌지 확인하고 쓰면되지만, 현업에선 (optional binding이라는)다른방법으로 쓰니 아래 코드는 이해만하고 넘어가기.
var name: String? = "daram"
if name != nil{
print("name == \(name!)") //name == daram
} else {
print("name == nil")
}
var name1:String? = nil
if name1 != nil{
print("name1 == \(name!)") //name == daram
} else {
print("name1 == \(name1)") //name1 == nil
}
//참고링크: https://babbab2.tistory.com/16
반응형