[Swift]演算子 ‘??’ の意味

Swiftのコードを見ていて、
??
という表現を見かけました

どういう意味かわからなったので調べました

The Swift Programming Language (Swift 2): Basic Operators
Appleが提供しているSwift Programming Languageに書いてありましたね

a ?? b は、 Nil Coalescing Operator というもの
Optional型のaをアンラップしたときに、nilでないならaをアンラップしたものを返し、aがnilの場合は、bを返す
というもの

a ?? b

は、

a != nil ? a! : b 

と同じことを示し、短く書くことができるというもの

なるほど。

MPMediaItem(ミュージックライブラリのアイテム)からタイトルやアーティスト名などを取得して表示する処理を書いていたけれども、そのさいtitleやartistは、String?型なので、nilだった場合は、””を表示していました
その処理部分、従来はこのように書いていました。

        
        // MPMediaItemのtitle,artistを取得。nilの場合は""とする
        // (itemはMPMediaItemを示す)
        let title = item.title != nil ? item.title! : ""
        let artist = item.artist != nil ? item.artist! : ""

それが、Nil Coalescing Operator(a ?? b) を使うと

        
        // MPMediaItemのtitle,artistを取得。nilの場合は""とする
        // (itemはMPMediaItemを示す)
        let title = item.title ?? ""
        let artist = item.artist ?? ""

と書けるわけですね
ちょっと、短くなりました

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください