swift - 将 vars 添加到闭包 swift

标签 swift

嘿,我对 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/

相关文章:

ios - 获取非空智能相册

ios - SKCloudServiceCapability 的 Swift 3.1 问题

Swift:将按钮添加到底部栏 NSWindow

properties - 为具有定义的 getter 和 setter 的属性设置默认值

ios - 强制本地化 UIKit 等内部框架,无需重启应用程序

ios - startMonitoringSignificantLocationChanges() 不能在 xcode 6 Beta2 中使用 swift?

swift - Firebase 2,访问快照中的子值会产生空值

JSON Swift 解包 [""]

swift - 扩展类中的字段为空

银联银行 : Update Value NSDictionary