はじめに
callAsFunction
という特殊な使い方ができる関数があると知りました。
私が最初にcallAsFunction
の存在に気づいたのはdismiss
ででした。
@Environment(\.dismiss) var dismiss
// 同じことをしている
dismiss()
dismiss.callAsFunction()
実装方法
callAsFunction
という関数名で実装をすると、使用時に関数名なしで使用できます。
class Adder {
func callAsFunction(_ a: Int, _ b: Int) -> Int {
return a + b
}
}
let adder = Adder()
let result1 = adder(1, 1) // 2
let result2 = adder(2, 3) // 5
let result3 = adder(4, 6) // 10
let result4 = adder(7, 5) // 12
おわり
構造体名で処理を表すことができるものであれば、callAsFunction
を使ったほうが良さそうですね!