//: Playground - noun: a place where people can play
import Swift
// 옵셔널 추출 방법에는 optional binding 과 force unwrapping 이 있다.
// optional binding : nil 체크 + 안전한 값 추출
func printName(_ name: String) {
print(name)
}
//var myName: String? = nil
// printName(myName)
// 전달되는 값의 타입이 다르기 때문에 컴파일 오류발생
var myName: String! = nil
if let name: String = myName {
printName(name)
} else {
print("myName == nil")
}
// name 상수는 if-let 구문 내에서만 사용가능합니다.
// 상수 사용범위를 벗어났기 때문에 컴파일 오류 발생
// printName(name)
var myName2: String? = "realName2"
var yourName: String? = nil
if let name = myName2, let friend = yourName {
print("\(name) and \(friend)")
}// yourName 이 nil이기 때문에 실행되지 않는다.
yourName = "realYourName"
if let name = myName2, let friend = yourName {
print("\(name) and \(friend)")
} // realName2 and realYourName
// Force Unwrapping 옵셔널의 값을 강제로 추출
func printName2(_ name: String){
print(name)
}
var myName3: String? = "realName"
printName2(myName3!) // realName
myName3 = nil
// print(myName3!)
// 강제 추출시 값이 없으므로 런타임 오류 발생
var yourName3: String! = nil
// printName2(yourName3) //nil 값이 전달되기 때문에 런타임 오류 발생
// optional binding 방식을 추천한다.
'Swift > 기초&문법' 카테고리의 다른 글
스위프트 swift 클래스 class (0) | 2018.08.21 |
---|---|
스위프트 swift 구조체 (0) | 2018.08.20 |
스위프트 swift 옵셔널 (0) | 2018.08.14 |
스위프트 swift 반복문 (0) | 2018.08.14 |
스위프트 swift 조건문 (0) | 2018.08.14 |