LoginSignup
31
28

More than 5 years have passed since last update.

【Swift】"??"を有効活用しよう - Nil Coalescing Operator -

Last updated at Posted at 2016-07-24

Bondのソースコードを眺めていたら??(ダブルクエッションマーク)が目に入り、頭も??になりました。BondオリジナルのSugar Sytaxかと思いきや、実はこれSwiftオリジナルのオペレーターで、Nil Coalescing Operatorと呼ぶことがわかりました。

簡単な例

使い方はいたってシンプル。
Optionalに対して、a != nil ? b! : cを評価し、aがnilでなければbを強制アンラップし、aがnilであればcを返します。

var maybeInts: [Int]? // nil
maybeInts != nil ? maybeInts! : [] // []
maybeInts ?? [] // []

もしintが入ったらこうなる。

maybeInts = [10,20,30]
maybeInts ?? [] // [10,20,30]
maybeInts != nil ? maybeInts! : [] // [10,20,30]

注意すべき点は型を揃える必要があるところです。

maybeInts = [10,20,30]
let wrong = maybeInts ?? [10.0] // error
let correct = maybeInts ?? [1,2,3] // ok

実際の使いどころ

一つの例としてオプショナル型配列と使うと、かなりすっきりします。

Before
if let maybeInts = maybeInts {
    for x in maybeInts  {
        let doubled = x * 2
        print(doubled)
    }
}
After
for x in maybeInts ?? [] {
    let doubled = x * 2
    print(doubled)
}

これなら早速、明日からでも使えますね。

参考

The Swift Programming Language (Swift 2.2)

31
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
28