Найти тему
Apple Swift

Swift: замыкание

Блок кода с определенным функционалом.

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

Начинается и заканчивается фигурной скобками. После открывающей фигурной скобки описываются параметры и возвращаемое значение по аналогии с функцией.

Тело замыкания начинается после ключевого слова 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})