XcodeのFixで変数が _ に修正される挙動について

XcodeのFixで変数が _ に修正される挙動について iOS

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属性を付与することで警告を抑制することができます。

関数に @discadableResult 属性を付与して警告を抑制する

Playgroundで実行しても戻り値が評価されて右のエリアに表示されるため警告は発生しません。

参考記事