Чтобы упростить мой реальный прецедент, предположим, что я хочу найти максимальное число в списке:
var max : Int? = null
listOf(1, 2, 3).forEach {
if (max == null || it > max) {
max = it
}
}
Однако компиляция не выполняется со следующей ошибкой:
Смарт-литье в "Int" невозможно, потому что "max" - это локальная переменная, которая захватывается изменяющимся закрытием
Почему переменная закрытие предотвращает работу смарт-броска в этом примере?