Проверяет знание механизма capture переменных в лямбдах и жизни этих переменных.
Короткий ответ
При замыкании лямбда «захватывает» внешнюю переменную по ссылке, а не её значение. Компилятор создаёт скрытый класс (closure class) с полем counter; все лямбды, использующие counter, ссылаются на одно поле этого объекта. Переменная живёт до тех пор, пока жива лямбда, и изменения в одной лямбде видны в другой.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.