嘿,我对 block 语法有点困惑。我目前有一个这样定义的函数:
func presentRateAlert(ID: Int, didDismiss: (() -> Void)?)
目前我的 block 中没有任何参数,但我想包括两个。 rating: Double?
和 message: String?
。我将如何包括这些?
最佳答案
在你的函数声明中,didDismiss 是一个闭包。它的类型是(() -> Void)?)
,这是一个不带参数的Optional闭包,返回Void
(没有结果。)
如果将其更改为 (() -> (Double,String)?
然后您的闭包返回一个元组,其中包含一个 Double
和一个 String
。
(在 Swift 中,一个函数只能返回一个结果。通常,当你想返回多个结果时,你会将该结果设为元组。)
编辑:
根据您的编辑,您似乎想将 PARAMETERS 添加到闭包中,而不是像您最初所说的那样返回值。
采用 Double 和 String 且不返回值的 Optional 闭包将声明为 ((Double, String) -> Void)?)
采用这种闭包的函数可能如下所示:
func test(id: Int, closure: ((Double, String) -> Void)?) {
closure?(3.14, "pi")
}
调用它可能是这样的:
test(id: 6, closure: {
(aDouble, aString) in
print("In closure, double = \(aDouble), string = \(aString)")
})
关于swift - 将 vars 添加到闭包 swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42630114/