В том, что я ожидаю что замыкание захватит имутабельное значение i. Ожидаю как минимум тоже поведение, что и при int a = 1; b = a; a = 2; // b == 1.
В том же свифт есть возможность управлять этим поведением. Если я не хочу чтобы значение извне было кем либо изменено я могу его захватить
var i = 1
let someFunc = { [i] in
print(i)
}
i = 2;
someFunc()
// 1