Блок кода с определенным функционалом.
Замыкание представляет из себя безымянную функцию, которую можно присвоить переменной или константе или передать ее как аргумент.
Начинается и заканчивается фигурной скобками. После открывающей фигурной скобки описываются параметры и возвращаемое значение по аналогии с функцией.
Тело замыкания начинается после ключевого слова in:
При вызове функции имена параметров не указываются
var d={(num:Int)-> Int in
var x = num
x+=10
return x
}
d(32)
Пример использования замыкания в качестве аргумента:
let allNum = [1,20,1,4]
func nFilter(sM:[Int], searchNum:(Int)->Bool){
var fEnd:[Bool]=[]
for c in sM{
let tmp=searchNum(c)
if tmp==true{fEnd.append(tmp)}
else{fEnd.append(tmp)}
}
print(fEnd)
}
nFilter(sM:allNum, searchNum:{(banknot:Int)->Bool in return banknot==1})
При передаче замыкания в качестве аргумента можно опустить описание типов т к они описаны параметром
nFilter(sM:allNum, searchNum:{banknot in return banknot==20})