我有这个方法签名,并且在如何创建和传递闭包方面存在问题。
该方法的签名如下所示。
func getProduct(_ catalog: String, closure: (String) -> Int) -> Bool {
return false;
}
问题是,如何称呼它?我一直在努力。
var result = getProduct("foo", closure: (name: String) -> return 4);
上面写着
前应为类型
首先是Swift:没有尾随分号。
您可以通过三种方式调用函数,参数名称param
是任意的:
-
标准语法
let result = getProduct("Foo", closure: { param in return Int(param) ?? 0 })
-
尾随闭包语法(这是代码完成建议的方式(
let result = getProduct("Foo") { param in return Int(param) ?? 0 }
-
关闭的单独声明
let closure : (String) -> Int = { param in return Int(param) ?? 0 } let result = getProduct("Foo", closure: closure)
在Swift 5.1+中,您甚至可以省略return
语句({ param in Int(param) ?? 0 }
(