何でもは知らない、知ってることだけ。
どうも、最近書き出しの挨拶を考えるのに時間を要する tobi462 です。
今日は SE-0196 で追加されたコンパイラディレクティブの紹介です。
今まで書いた Swift 4.2 の記事は以下です。
- Swift 4.2 で追加される @dynamicMemberLookup メモ(SE-0195)
- Swift 4.2 では boolean の反転(toggle)ができるようになる(SE-0196)
- Swift 4.2 では enum の件数がとれるようになる(SE-0194)
いつのまにかシリーズ化してきましたね。 (化物語みたいに)
Tl;Dr
#warning("強制アンラップはやめるべき") // コンパイル時の警告 let message = self.message! #error("APIのアクセストークンを設定してください") // コンパイルエラー let API_TOKEN = ""
in Objective-C
Objective-Cでは以下のようなコンパイラディレクティブが利用できました。
#warning 暫定対処、後ほど修正するべき #error APIトークンを設定する必要あり
それぞれコンパイル時にWarning、Errorとできる仕組みです。
これによって後ほど修正すべき箇所をWarningとして警告しておいたり、ライブラリのテンプレートコード中に埋め込んでおき、実装が必須であることを明示できるというメリットがあります。
これはコメントで代替することも可能ですが、(標準の)コンパイル時において警告またはエラーとして明示することができる点がメリットになります。
in Swift 4.2
Objective-Cでサポートされていたこの機能が、Swift 4.2 でようやくサポートされました。
#warning("暫定対処、後ほど修正するべき") #error("APIトークンを設定する必要あり")
また、#if
のような他のコンパイラディレクティブとも併用して利用することも出来るようです。
#if os(iOS) #error("macOSはサポート外です") #endif
上記のように、あるライブラリを作成していたときに特定のプラットフォームだけサポート外としてエラーにしたいということもできるのは便利と言えるでしょう。
まとめ
やれやれ、1記事にするほどの内容でも無かったんじゃないかな、阿良々木くん。
というわけで Swift でもコンパイラディレクティブ(Warning、Error)が使えるようになったという話でした。
また次回?