🪬
XcodeのFixで変数が _ に修正される挙動について
XcodeのFixで変数が _ に修正される
これは、 Xcode が関数の戻り値を _(ワイルドカード)への代入によって明示的に戻り値を無視することで、警告を抑制するというものでした。
通常、戻り値のある関数を呼び出す場合は、変数や定数に代入します。
戻り値の代入を省略するとコンパイルエラーとなります。
しかし、関数の戻り値に変数を宣言すると、 Xcode によって以下のような黄色いアラートがでました。
Initialization of immutable value 'a' was never used; consider replacing with assignment to '_' or removing it
Replace 'let a' with '_'
そして Fix をすると、 Xcode が変数を _
に変更するのですが、これの意味が今までわかりませんでした。
これは宣言した変数(関数の戻り値)が使用されていないので、変数を宣言する意味がない(関数の戻り値が不要となる)ため、 _
に変えて明示的に変数を使用しない(戻り値を無視する)というものです。
// 以下のコードは「Swift実践入門」6.2からの引用です
func functionWithDiscardableResult() -> String {
return "Discardable"
}
_ = functionWithDiscardableResult() // "Discardable"
もしくは、戻り値の使用を必須としない場合は、関数に discardableResult
属性を付与することで警告を抑制できます。
Playground で実行しても戻り値が評価されて右のエリアに表示されるため警告は発生しません。
Discussion