私はSwiftを初めて使用していて、Googleからこの回答を見つけることができないので、これはノービスの質問であれば申し訳ありません。ガードとインバートの違いは何か
私が最初にガードを見たとき、私は他のプログラミング言語で逆if
を考えます。
var optString: String?
guard optString != nil else { return }
if optString == nil { return }
2行目と3行目で同じ結果が得られませんか?
私はnil
をチェックするよりもコードを簡単にしてアンラッピングすることができますが、guard
の目的は何ですか?私が調査したところから、反転したif
を入れ替えてif
が同じことをすることができると言う人々を見つけることができます。
通常、ガードは関数の先頭に置かれ、コンパイラはelseブランチの関数から戻るように強制するため、入力を検証するための優先メソッドであると言えるでしょう。メソッド本体は入力データの有効性に関係なく実行されます。 –
また、ガードを使用すると、失敗の条件ではなく*成功*の条件をリストして、意図を明確にすることができます。 – Hamish
@TarvoMäeseppそれは逆の 'if'でもできることです。私はこのトリックを行うために他の言語で 'if'を逆に使っていました。 – Joshua