Language/Swift
swift optional chain
jaewpark
2022. 8. 24. 16:01
optional 타입은 nil이 할당될 수도 있는 값을 의미합니다.
struct Human {
var name: String?
var man: Bool = false
}
struct Univ {
var univName: String?
var student: Human?
}
var universityStudent: Univ? = Univ(univName: "Harvard", student: Human(name: "Bill", man: true))
if let univ = universityStudent {
if let student = univ.student, let universityName = univ.univName {
if let name = student.name {
print("\(universityName) 대학교 다니는 \(name)입니다")
}
}
}
if let name = Human.name 과 같이 안정성 여부를 검사해야 합니다.
강제로 해제할 경우 예상치 못한 오류를 발생시킬 수 있습니다.
optional을 하나하나 확인하기보다는 optional 체인으로 사용을 하면 한 줄로 줄일 수 있습니다.
- 옵셔널 체인으로 참조된 값은 무조건 옵셔널 타입으로 반환합니다.
- 옵셔널 체인 과정에서 옵셔널 타입들이 여러번 겹쳐 있더라도 중첩되지 않고 한 번만 처리됩니다.
struct Human {
var name: String?
var man: Bool = false
}
struct Univ {
var univName: String?
var student: Human?
func getStudent() -> Human? {
return self.student
}
}
var universityStudent: Univ? = Univ(univName: "Harvard", student: Human(name: "Bill", man: true))
if let name = universityStudent?.getStudent()?.name {
print("학생의 이름은 \(name) 입니다")
}
name에 대한 값을 반환받기 위해 Human을 반환하는 메소드를 추가하였습니다.