3항 연산자, 조건(true or false) ? 값1 : 값2의 형식을 띈다. 조건이 참(true)이면 값1을 거짓(false)이면 값2의 값을 가진다.
let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 20)
// rowHeight 에는 90의 값이 들어간다.
nil-coalescing operator (a ?? b)는 a의 값이 존재하지 않을 때(nil), b의 값으로 평가된다.
아래와 같이 사용한다
a != nil ? a : b
이 nil-coalescing operator는 기본값을 세팅할 때 사용하기도 한다.
let defaultColorName = "red"
var userDefinedColorName: String? // 변수가 nil인 상황
var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName가 할당되지 않아 nil이기 때문에 defaultColorName의 값인 "red"가 할당된다.
마찬가지로 nil이 아니라면 ?? 뒤의 값은 평가되지 않는다.
userDefinedColorName = "green"
colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName가 nil이 아니기 때문에 colorNameToUse는 "green"이 되지 않는다.