옵셔널 이해하기 (복습)
옵셔널(Optional) : nil값을 다룰 수 있게 한다.
옵셔널 강제추출 (Unwrapped Optional)
옵셔널 체이닝(Optional Chaining)
class Room{
var number : Int // 방 번호
init(number : Int){ //초기화
self.number = number
}
}
class Building { //건물이름
var name : String
var room : Room?
init(name : String){
self.name = name // 초기화값
}
}
struct Address {
var province : String
var city : String
var street : String
var building : Building?
var detailAddress : String?
}
class Person {
var name : String
var address : Address?
init(name: String) {
self.name = name
}
}
let SeongWoo : Person = Person(name: "SeongWoo")
SeongWoo.address = Address(province: "서울특별시", city: "서울시", street: "올림픽대로", building: nil, detailAddress: nil)
SeongWoo.address?.building = Building(name: "성집")
SeongWoo.address?.building?.room = Room(number: 0)
SeongWoo.address?.building?.room?.number = 5005
if let roomNumber: Int = SeongWoo.address?.building?.room?.number {
print(SeongWoo.address!)
} else {
print("Can not find room number")
}
빠른 종료(Early Exit)
guard Bool 타입 값 else {
예외사항 실행문
제어문 전환 명령어
}
if문과 guard문의 비교
for i in 0...3 {
if i == 2 {
print(i)
} else {
continue
}
}
for i in 0...3 {
guard i == 2 else {
continue
}
print(i)
}
func greet(_ person: [String: String]) {
guard let name: String = person["name"] else {
return
}
print("Hello \(name)")
guard let location: String = person["location"] else {
print("I hope the weather is ice near you")
return
}
print("I hope the weather is nice in \(location)")
}
var personInfo: [String: String] = [String:String]()
personInfo["name"] = "SeongWoo"
greet(personInfo)
personInfo["location"] = "korea"
greet(personInfo)