Null Coalescing Operator

Null Coalescing Operator、日本語だとヌル結合演算子と訳すのかな?

func doSomething(queue: dispatch_queue_t? = nil, handler: () -> Void) -> Void {
    dispatch_async(queue ?? dispatch_get_main_queue()) {
        handler()
    }
}

こんな感じの関数があったとして、queueを渡さずに実行するとdispatch_asyncの引数のところでNull Coalescing Operatorたる「??」が評価されます。こいつは左項がnilじゃなかったら左、nilだったら右を返す比較演算子。知らなかったのでWikipediaで調べたら、C#PHPPythonなどそろって書いたことのない言語が。

Null coalescing operator - Wikipedia, the free encyclopedia