😶🌫️
[Swift] 関数の使わない引数を明示する
プロトコルの要求などで引数を取るものの、実装内部ではその引数を使わないことがあります。
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