Всем привет!

Я решил, что также хочу опубликовать некоторые концепции, которые я узнаю во время программирования. Для тех, кто не знает, я инженер-программист и в настоящее время занимаюсь созданием мобильных приложений для Android. Однако я люблю iOS и делаю приложения на Swift с 2014 года.

Это будет кратко и лаконично, в будущем я могу расширить его.

Что такое закрытие?

Замыкание - это функция, которую можно передавать как переменную. Один из способов думать о замыкании как о типе, который содержит функцию, то есть Strings, Ints, Double.

Также важно понимать функцию. Функция - это блок кода, определенный ключевым словом func в Swift. Функции могут не принимать и не возвращать ни одного, одного или нескольких параметров.

Почему они используются?

Они используются для того, чтобы сделать код более чистым и читаемым, поскольку используют простой синтаксис. Они также дают вам гибкость повторного использования кода менее сложным способом. За счет уменьшения сложности это также упрощает отладку кода.

Как написать закрытие?

Вот несколько форм закрытия:

var noParametersOrReturn: () -> () = {
print(“no params, or return types”)
}
var noParametersReturnString: () -> String = {
return “no params, return string”
}

Завершающие замыкания позволяют сокращать синтаксис, если замыкание является последним параметром функции.

func sayHiAndRunClosure(name: String, closure: () -> ()) {
    print("Hi, \(name)!")
    closure()
}
sayHiAndRunClosure(name: "Mary") {
    print("The closure was ran!")
}

Есть еще более короткий синтаксис. Параметры закрытия могут быть ссылками по позиции ($ 0, $ 1,…), а не по имени.

let numbers = [1, 1, 2, 5] 
let odd = numbers.filter { $0 % 2 == 1 }
let names = [“Joe”, “James”, “Joane”, “Jamie”] 
let even = names.filter { $0.characters.count > 3 }

Принимает замыкание в качестве аргумента, выполняет это замыкание для каждого элемента массива.

Каковы некоторые варианты использования?

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

например, Сетевые запросы - получение данных с сервера и обновление пользовательского интерфейса.

т. е. события касания пользователя - запуск блока кода после события касания (касание, перетаскивание, сжатие)

Вот и все, ребята! Краткий обзор закрытий. Я хотел бы продолжать создавать больше контента, комментируйте ниже любые предложения или улучшения.

Заботиться.

-Родни