func presentRateAlert(ID: Int, didDismiss: (() -> Void)?)
目前我在块中没有任何参数,但我想包括两个。 rating: Double?
和message: String?
。我怎么包括这些?
答案 0 :(得分:2)
在你的函数声明中,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)")
})