옵셔널에 속해있는 nil일지도 모르는 프로퍼티, 메서드, 서브스크립션에 질의(query)를 하는 과정
-> 만약 옵셔널이 프로퍼티나 메소드 혹은 서브스크립트에 대한 값을 갖고 있다면 그 값을 반환하고 만약 값이 nil이면 nil을 반환한다. 여러 질의를 연결해서 할 수도 있는데, 연결된 질의에서 어느 하나라도 nil이면 전체 결과는 nil이 된다.
import UIKit
struct Developer {
var name:String
}
struct Company {
let name : String
var developer : Developer?
}
var developer = Developer(name: "Daeseong")
var company = Company(name: "DK", developer: developer)
print(company.developer) // nil
//print(company.developer.name) // Error: 옵셔널을 벗기지 않아서
print(company.developer?.name) // Optional("Daeseong")
print(company.developer!.name) // "Daeseong" , 강제 언래핑