смотри функция инкремент захватывает значение рунинг тотал. Затем когда я вызваю функцию мэйк возвращается функция и если я ее вызову то она добавит сущ значение.
Вот пример функции makeIncrementer, которая содержит вложенную функцию incrementer. Вложенная функция incrementer() захватывает два значения runningTotal и amount из окружающего контекста. После захвата этих значений incrementerвозвращается функцией makeIncrementer как замыкание, которое увеличивает runningTotal на amount каждый раз как вызывается.
Это не тот же механизм, что захват ссылки на объект, например мы обсуждали self. Попробуй передать этот runningTotal куда-то из функции incrementer и изменить там. Он просто будет скопирован. Т.к. это value type
Не знаю как правильно описать, но функция и та переменная находятся в одном скоупе, и поэтому функция имеет доступ к runningTotal. Если ты попробуешь вот так захватить в escaping closure эту runningTotal, то она уже не будет меняться в том скоупе, переменная скопируется