Вызывают ли функции сохранение циклов?

Я знаю, что использование замыкания всегда захватывает свойства или методы, используемые внутри замыкания.

Но вызывают ли функции сохранение циклов? Если это так, пожалуйста, объясните мне это!

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

Мой вопрос касается того, сохраняет ли функция память, как это делает закрытие.


person darren zou    schedule 10.07.2017    source источник
comment
Замыкания — это просто анонимные функции (т. е. функции без имени), поэтому функции будут действовать почти так же и переносить свою локальную область видимости. Дополнительная информация: developer.apple.com/library/content /документация/Свифт/   -  person iwasrobbed    schedule 10.07.2017
comment
Возможный дубликат В чем разница между функциями и замыканиями?   -  person iwasrobbed    schedule 10.07.2017
comment
Глобальные функции — это замыкания, которые имеют имя и не фиксируют никаких значений. Вложенные функции — это замыкания, которые имеют имя и могут захватывать значения из включающей их функции. Выражения замыкания — это безымянные замыкания, написанные с использованием облегченного синтаксиса, который может захватывать значения из окружающего контекста. понял .. Но мой вопрос никоим образом не является ошибкой, потому что я не идиот и знаю разницу между закрытием и функцией.   -  person darren zou    schedule 10.07.2017


Ответы (1)


Я знаю, что использование замыкания всегда захватывает свойства или методы, используемые внутри замыкания.

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

Но вызывают ли функции сохранение циклов? Если это так, пожалуйста, объясните мне это!

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

person newacct    schedule 22.07.2017