【Swift】ワイルドカードの使い方。使わない変数をアンダースコアでスッキリさせる。(Swift 2.1、XCode 7.2)

2020年6月16日

ワイルドカードとは

ワイルドカードとは、宣言する必要はあるが実際は使わない変数に用いられる省略記法のことである。記法は単純で、変数名を「_(アンダースコア)」にするだけである。

例えば、以下のコードは関数を呼び出した戻り値をワイルドカードの変数に代入する例である。関数は引数×2を計算して画面に出力したあとに計算結果を呼び元に返すが、呼び元では計算結果を使わないのでワイルドカードの変数に代入した。

しかし、この例では単純に「var _」を書かなければいい話なのであまり有効ではない。

 

ちなみに、ワイルドカードは変数ではないので、ワイルドカードの値を取得しようとするとエラーになる。

 

ワイルドカードの使いどころ

どんなときに使えるだろうか。例えば、以下のコードのように関数の戻り値がタプルで、その後の処理で使うのがタプルの中の限られたものの場合、使わないものをワイルドカードにしてしまえば、コードがスッキリして見やすくなる。

 

for-in文を使ってループをするときに、処理の中でループカウンタの値を使わない場合はワイルドカードに代入してもスッキリする。

 

クロージャの変数を使いまわすときに、処理ごとに必要な引数が異なる場合がある。そんなときは、以下のコードのように必要の無い引数をワイルドカードにしてしまえばスッキリする。

 

関数の引数にワイルドカードを使うこともできる。以下のコードのように、第2と第3引数をワイルドカードで宣言すれば、呼び出す側は決められた型と個数を引数に与える必要があるが、関数内部で使えるのは第1引数のみになる。

そもそも、引数の定義自体を削除したほうがスッキリすると思うが、プロトコルを適用したクラスを作るときやメソッドのオーバーライドなどで引数を削除できないときに利用することになりそうだ。なお、プロトコルやオーバーライドに関しては本サイトではまだ説明してないので、今後の記事で説明する。