簡體   English   中英

如何使用以下完成處理程序調用 function?

[英]How do I call a function with the following completion handler?

如何使用以下簽名調用 function?

func purchaseSubscription(productId: String, completion:  @escaping  (Bool, String, String) -> Void) {

是嗎

InAppHandler.purchaseSubscription("test") {
     processPurchase()
}

可以有多個 forms 調用該方法。

1.定義調用closure時的參數,ue

InAppHandler.purchaseSubscription(productId: "test") {(x, y, z) in
    print(x, y, z)
    processPurchase()
}

2.在調用閉包時,可以對closure中的參數使用簡寫形式( $0, $1等),即

InAppHandler.purchaseSubscription(productId: "test") {
    print($0, $1, $2)
    processPurchase()
}

上面2個是一樣的。 只是在第一個中您提供參數名稱,而在第二個中您使用這些參數的簡寫。

3.如果您沒有使用closure中的任何參數,請像這樣用下划線( _ )標記它們,

InAppHandler.purchaseSubscription(productId: "test") {(_, _, _) in
    processPurchase()
}

您可以根據需要使用任何其他 forms。

完成處理程序需要三個輸入參數。 您可以忽略參數,但必須明確說明。 此外,簽名表明這是一個成員 function,而您似乎在類型(類、結構、枚舉...)上調用 function。 所以正確的方法是:

let inAppHandler = InAppHandler()
inAppHandler.purchaseSubscription(productId: "test") { _, _, _ in 
    processPurchase()
}

這是您的電話:

InAppHandler().purchaseSubscription(productId: "anyStringData") { (boolCheck, result1, result2) in
            print(result1)
        }

這是你的定義:

 func purchaseSubscription(productId: String, completion:  @escaping  (Bool, String, String) -> Void) {
    completionResult(true,"Data1", "Data2")
    }

這是您需要使用的代碼:

InAppHandler.purchaseSubscription(productId: "test") { (boolVal1, stringVal, boolVal2) in
    processPurchase()
}

你的電話應該是這樣的

 InAppHandler.purchaseSubscription(productId: "YOUR_PRODUCT_ID_STRING") { (boolValue, firstString, secondString) in

 }

由於您沒有使用任何閉包參數,因此建議使用_

  purchaseSubscription(productId: "Id") { _, _, _ in
            processPurchase()
     }

最好在執行 processPurchase() 之前檢查關閉參數

      purchaseSubscription(productId: "Id") { success, _, _ in
         if success {
               processPurchase()
          }
       }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM