オプショナルバリューにnilが入っていた場合、変数をそのまま計算式などで使おうとすると当然エラーが発生する。

var count:Int?
var price:Int

price = 100 * count
print(price) // エラー!

こういったエラーを避けるため、オプショナルバインディングという手法がよく使われるが、今回はnilだった場合に初期値を設定する方法を紹介する。

??演算子を使って初期値を設定する

先述のコードを以下のように修正することでエラーを回避することができる。

var count:Int?
var price:Int

price = 100 * (count ?? 2)
print(price)

??演算子は、もし変数がnilだった場合、演算子に続く値を初期値として設定する役割を持っている。

もう一つの例を見てみよう。

以下の例では、配列から最初の値を取り出してuserNameに格納している。
この時、もし配列が空の場合userNameにはnilが入るので、??演算子を使って初期値を設定している。

var nameList:[String] = []
let userName:String = nameList.first ?? "名無しのごんべい"
print(userName)
// 名無しのごんべい