nil 結合演算子
??
は、オプショナル型を左辺にとる演算子で、左辺の値が nil
なかった場合は左辺の値そのものを、左辺の値が nil
だった場合は右辺の値を、返す演算子として規定されています。右辺の型は、左辺の型と同じオプショナル型か、それがラップしている型のどちらかである必要があります。演算結果は右辺と同じ型で得られます。
let v: Int? = 5
let w = v ?? Int?(0)
let x = v ?? Int(0)
type(of: w) // Int?
type(of: x) // Int


