Эта публикация является конспектом соответствующего раздела замечательной книги «iOS 8 Programming Fundamentals with Swift» Matt Neuburg, O'Reilly, 2015. Статья, описывающая использование анонимных функций, может быть интересной новичкам или пригодится как шпаргалка для более продвинутых разработчиков.
Рассмотрим пример:
func whatToAnimate() {//self.myButton является кнопкой в интерфейсе
Self.myButton.frame.origin.y += 20
}
func whatToDoLater(finished:Bool) {
printLn(“finished: (finished)”)
}
UIView.animateWithDuration(
0.4, animations: whatToAnimate, completion: whatToDoLater)
В этом участке кода есть некоторая странность. Я объявляю функции whatToAnimate и whatToDoLater только для того, чтобы передать эти функции на следующую строку кода. И действительно, имена этих функций мне больше ни для чего не нужны – ни имена, ни эти функции больше никогда не будут повторно использованы. Было бы хорошо передавать только тела этих функций, без необходимости декларации их имен.
Такие функции называются анонимными, они имеют право на существование и часто используются в Swift.
Читать полностью »