Swift:: Optional

jahlee·2023년 4월 25일
0

Swift기초

목록 보기
8/26
post-thumbnail

Implicitly Unwrapped Optional(암시적 추출 옵셔널)

var optionalValue: Int! = 100

switch optionalValue {
case .none:
	print("var is nil")
case .some(let value):
	print("var is \(value)")
}

기존 변수처럼 활용이 가능하고 nil 할당이 가능하지만 잘못된 접근으로 런타임 오류가 발생할 여지가 있다.

Optional

var optionalValue: Int? = 100

switch optionalValue {
case .none:
	print("var is nil")
case .some(let value):
	print("var is \(value)")
}
nil 할당이 가능하지만 기존 변수처럼은 활용할 수 없다. 옵셔널과 일반타입과는 다른타입으로 취급한다.

Optional 값 추출방법

Optional Binding(옵셔널 바인딩)

func printName(_ name: String) {
	print(name)
}
var myName: String? = nil
var yourName: String? = jahlee
printName(myName)// 타입이 달라서 컴파일 오류
// if let 방식으로 존재하면 사용할 수 있다.
if let name: String = myName{
	print("my name is \(name))
}
else {
	print("name == nil")
}
// 여러 옵셔널 변수들을 한꺼번에 바인딩 할 수있다. 대신 모든 옵셔널 변수들이 다 존재해야 들어가진다.
if let name: String = myName, let friend: String = yourName{
	print("my name is \(name))
}
else {
	print("name == nil")
}

Force Unwrapping(강제 추출)

var myName: String? = nil
var yourName: String! = jahlee

print(myName!)// 이와같이 강제로 추출할 수 있다.
// 암시적 추출의 경우 이미 강제추출을 가정하고 선언을 하였기 때문에
// !를  빼도 된다.
print(yourName)

0개의 댓글