😶‍🌫️

[Swift] 関数の使わない引数を明示する

2023/03/30に公開

プロトコルの要求などで引数を取るものの、実装内部ではその引数を使わないことがあります。

protocol P {
    func foo(a: Int, b: Int)
}

struct A: P {
    func foo(a: Int, b: Int) {
        // aしか使わない処理
    }
}

こういう場合、bを意図的に使っていないのか、使い忘れているのかぱっと見よくわかりません。そこで、次のようにすることで意図的に使っていないことを示すことができます。

struct A: P {
    func foo(a: Int, b _: Int) {
        // aしか使わない処理
    }
}

このb _: Intという表記は通常の関数宣言の記法と同様で、bがラベル、_が内部的な変数名です。しかし内部的な変数名に_を使うのは「不使用」の宣言なので、foo内部でbの値を使うことはできなくなります。

ちなみに、func foo(_ _: Int)みたいなのも可能です。ちょっと顔文字っぽいですね。

使い所は限られていますが、知っておくと便利かもしれません。

Discussion