将vars添加到一个关闭swift

时间:2017-03-06 16:00:22

标签: swift

嘿,我对块语法有点困惑。我目前有一个如此定义的函数:

func presentRateAlert(ID: Int, didDismiss: (() -> Void)?)

目前我在块中没有任何参数,但我想包括两个。 rating: Double?message: String?。我怎么包括这些?

1 个答案:

答案 0 :(得分:2)

在你的函数声明中,didDismiss是一个闭包。它的类型是(() -> Void)?),它是一个不带参数的Optional闭包,返回Void(没有结果。)

如果您将其更改为(() -> (Double,String)?

然后你的闭包返回一个包含DoubleString的元组。

(在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)")
})