4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

バグに気づきやすくなる`??`演算子を改造したカスタムオペレータ 【Swift】

Last updated at Posted at 2019-03-04

はじめに

??オペレータをむやみに使うとデバッグ段階で気づくべきバグに気付けなくなる可能性があるので,下記の記事で述べられていることは有意義に感じた.
しかし,毎回下記の記事に書いてあるように記述するのも大変そうなので,簡単に扱えるカスタムオペレータを作ってみた.

安易な気持ちで as? Int ?? 0 みたいなコードを書いてはいけません(戒め
https://qiita.com/lovee/items/a82087f8c3663f207c7f

作ったカスタムオペレータ !?

二項演算子で表現した.
エラー文は関西人風味でお届け.これでバグを出ても決して苛立つ事は無くなるので一石二鳥である.ぜひ採用してみてほしい.

infix operator !?
func !?<T>(lhs: T?, rhs: T) -> T {
    return lhs ?? {
        assertionFailure("って,アンラップ出来んやないか~~~~い😂")
        return rhs
    }()
}

let text: String? = nil
// デバッグ環境ならエラー, プロダクション環境なら"hello world"が返却されます
print(text !? "hello world")

感想

プログラマが真にnil許容を許容している場合は??を,コンパイラに翻弄されてしまっている場合は!?を使う,といったような使い分けが出来ると良いと思った.

4
3
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
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?