Видеокурсы по изучению языка программирования Swift. Подробнее

Замыкания - ссылочный тип

Если вы нашли опечатку в тексте, выделите ее и нажмите CTRL + ENTER.

В примере выше incrementBySeven и incrementByTen константы, но замыкания, на которые ссылаются эти константы имеют возможность увеличивать переменные runningTotal, которые они захватили. Это из-за того, что функции и замыкания являются ссылочными типами.

Когда бы вы не присваивали функцию или замыкание константе или переменной вы фактически присваиваете ссылку этой константе или переменной на эту функцию или замыкание. В примере выше выбор замыкания, на которое ссылается incrementByTen, константа, но не содержимое самого замыкания.

Это так же значит, что если вы присвоите замыкание двум разным константам или переменным, то оба они будут ссылаться на одно и то же замыкание:

let alsoIncrementByTen = incrementByTen
alsoIncrementByTen()
//возвращает 50
Swift: 
3.0