使用参数集外的完成块实现 Swift 函数

Implement Swift function with completion block outside parameter set

正如我理解的那样,我们可以使用函数

func saveImage(imageType:imageType, thumb: UIImage, completion: CompletionHandler)

像这样:

imageSaver.saveImage(someType, thumb:image) { in
...
}

但实际上从 Objective-C 开始,我认为该块是一个参数,也许我应该这样使用它:

imageSaver.saveImage(someType, thumb:image, { in
...
})

作为 Objective-C 编码员,还有一个对我来说很有趣,它正在将参数传递给函数:

所以如果我想像这样向 savaImage 函数添加一些参数:

func saveImage(someInt:UInt, imageType:imageType, thumb: UIImage, completion: CompletionHandler)

那么我应该通过指定 imageType 名称来调用它。

imageSaver.saveImage(10, imageType:someType, thumb:image) { in
...
}

我想在 Swift 中我们有类似跳过函数定义的东西

Objective-C 示例:

- (void)saveImage:(UIImage *)image withParams:(NSDictionary *)params

所以 withParams 有时可以在函数开始时跳过,正如我理解的那样,这对我来说不是很明显)

是的,这是区分闭包和函数的部分目的。它并不是真正在函数外定义一个块,而是一些语法糖来提高可读性。

我建议通读一下:Closure Documentation