비전공자의 Swift 기초문법-5

Cobugi·2021년 8월 11일
0

swift

목록 보기
6/12
post-thumbnail

옵셔널(Optional)

  • 값이 있을 수도 있고 없을 수도 있다
  • nil
  • !, ?
  • 옵셔널 바인딩
    • 명시적 해제: 강제해제(!), 비강제해제(if let, guard)
    • 묵시적 해제: 컴파일러에 의한 자동 해제(비교연산자에 의해), !를 이용한 자동 해제(:type!)

옵셔널 선언

var name:String?
var optionalName: String? = "cobugi"
print(optionalName)		// Optional("cobugi")
// var requiredName: String = optionalName // optionalName이 옵셔널이라서 String타입으로 변수를 선언할 수 없음

옵셔널 바인딩(명시적 해제)

// 강제해제 : 위험함 (nil을 강제해제하면 에러남)
var number: Int? = 3
print(number) // optional(3)
print(number!) 

// 비강제해제(`if let`, `guard`)
// if let(추출한 옵셔널 값을 if문 안에서만 사용 가능)
if let result = number {
    print("result : ", result)
} else {
    // 값 추출 실패하면 이 구문이 실행
}

// guard(추출한 옵셔널 값을 guard문 밖, 함수 전체에서 사용 가능)
func test() {
    let number: Int? = 5
    guard let result = number else { return }
    print(result)
}
test()

옵셔널 바인딩(묵시적 해제)

// 컴파일러에 의한 자동 해제(비교연산자에 의한)
let value: Int? = 6
if value == 6 {
    print("value가 6입니다.")			// "value가 6입니다."
} else {
    print("value가 6이 아닙니다.")
}

// !를 이용한 자동 해제(:type!, 반드시 존재할 때 사용)
let string = "12"
var stringToInt: Int! = Int(string)
print(stringToInt + 1)  // 연산 가능
profile
iOS Developer 🐢

0개의 댓글