我用一个转义变量写了一个函数
func getData(data: PSData, otherParams: [String], completion: @escaping (Bool) -> Void)
通常我会这样称呼
getData(data: myData, otherParams: myOtherParams) { (response) in
print(response)
}
如果我不需要响应,以这种方式调用函数是否正确?或者是否有任何简化可以做到
getData(data: myData, otherParams: myOtherParams) { (_) in }
答案 0 :(得分:3)
是的,这是正确的:
getData(data: myData, otherParams: myOtherParams) { _ in }
但是当你通过nil
(不输入这个丑陋的大括号)或使用nil
作为默认值时,它会更清晰一些:
func getData(data: PSData, otherParams: [String], completion: ((Bool) -> Void)? = nil)
getData(data: myData, otherParams: myOtherParams, completion: nil)
getData(data: myData, otherParams: myOtherParams) // shorter version
UIKit
使用类似的方式:
@available(iOS 5.0, *)
open func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Swift.Void)? = nil)
答案 1 :(得分:1)
您还可以编写类似以下内容的函数:
func getData(data: PSData, otherParams: [String], completion: ((Bool) -> ())?) {
}
getData(data: myData, otherParams: myOtherParams, completion: nil)
OR
getData(data: myData, otherParams: myOtherParams) { (response) in
print(response)
}
答案 2 :(得分:0)
你可以省略括号:
getData(data: myData, otherParams: myOtherParams) { _ in }
...或者如果该函数是您自己的并且可以自定义,您可以为闭包提供默认值,您可以将它完全取消:
func getData(data: PSData, otherParams: [String], completion: @escaping(Bool) -> Void = { _ in })
[...]
getData(data: myData, otherParams: myOtherParams)