[英]Adding vars to a closure swift
嘿,我對塊語法有些困惑。 我目前有一個這樣定義的函數:
func presentRateAlert(ID: Int, didDismiss: (() -> Void)?)
當前,我在塊中沒有任何參數,但是我想包括兩個。 rating: Double?
和message: String?
。 我將如何包括這些?
在函數聲明中,didDismiss是一個閉包。 類型是(() -> Void)?)
,這是一個不帶參數的可選閉包,並且返回Void
(無結果)。
如果將其更改為(() -> (Double,String)?
然后,您的閉包返回一個包含Double
和String
的元組。
(在Swift中,一個函數只能返回一個結果。通常,當您要返回多個事物時,可以將該結果設為一個Tuple。)
根據您的修改,您似乎想將參數添加到閉包中,而不是像最初所說的那樣返回值。
接受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)")
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.