如何调用具有以下签名的函数?
func purchaseSubscription(productId: String, completion: @escaping (Bool, String, String) -> Void) {
是吗
InAppHandler.purchaseSubscription("test") {
processPurchase()
}
可以有多个窗体来调用该方法。
1.定义调用闭包
时的参数。
InAppHandler.purchaseSubscription(productId: "test") {(x, y, z) in
print(x, y, z)
processPurchase()
}
2.您可以在调用闭包
时对其中的参数使用速记形式($0,$1
等),即。
InAppHandler.purchaseSubscription(productId: "test") {
print($0, $1, $2)
processPurchase()
}
以上2个相同。 只是在第一个例子中,您给出了参数名称,而在第二个例子中,您使用了这些参数的速记法。
3.如果您没有使用闭包
中获取的任何参数,请用下划线(_
)标记它们,
InAppHandler.purchaseSubscription(productId: "test") {(_, _, _) in
processPurchase()
}
您可以根据您的要求使用任何其他表格。
完成处理程序需要三个输入参数。 您可以忽略这些参数,但必须明确表示这些参数。 此外,签名表明这是一个成员函数,而您似乎在调用类型(class,struct,enum.。。)上的函数。 所以正确的方法是:
let inAppHandler = InAppHandler()
inAppHandler.purchaseSubscription(productId: "test") { _, _, _ in
processPurchase()
}
这是你的电话:
InAppHandler().purchaseSubscription(productId: "anyStringData") { (boolCheck, result1, result2) in
print(result1)
}
这是你的定义:
func purchaseSubscription(productId: String, completion: @escaping (Bool, String, String) -> Void) {
completionResult(true,"Data1", "Data2")
}