Реализовать функцию Swift с блоком завершения вне набора параметров

Как я правильно понял, мы можем использовать функцию

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 у нас есть что-то вроде пропуска определения функции

Пример цели-C:

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

Так что withParams иногда можно пропустить при запуске функции, как я правильно понял, что для меня не совсем очевидно)


person Matrosov Alexander    schedule 18.04.2016    source источник
comment
какой вопрос ты задаешь?   -  person GetSwifty    schedule 18.04.2016
comment
@PEEJWEEJ мой вопрос: законно ли реализовывать блок вне () функции, так как я вижу, что это последний параметр функции. в задаче c мы не использовали это так.   -  person Matrosov Alexander    schedule 18.04.2016


Ответы (1)


Да, это часть цели различия между замыканием и функцией. На самом деле это не определение блока вне функции, а некий синтаксический сахар для улучшения читабельности.

Я бы посоветовал прочитать это: Closure Documentation

person GetSwifty    schedule 18.04.2016
comment
ок понял, но это означает, что это будет работать только в том случае, если замыкание является последним параметром в функции. Правильно? - person Matrosov Alexander; 18.04.2016
comment
Я считаю, что это правильно. Это также не работает изнутри, если операторы let или guard let - person GetSwifty; 18.04.2016