Аналогично тому, как параметры функции являются окончательными в Kotlin , поэтому переменные используются в for
циклах.По сути, запись ...
for (i in array) {
...
}
... эквивалентна выполнению этого в Java:
for (final int i : array) {
...
}
Это помогает выявить некоторые распространенные ошибки, в данном случае - еслиКомпилятор позволил вам - вы бы переназначили эту локальную переменную, которая просто содержит ссылку на реальный элемент, без изменения массива.В терминах Java вы должны делать это:
for (int i : array) {
i = transform(i);
}
Это новое значение i
не используется, оно не меняет сам массив, и оно будет немедленно перезаписано значениемследующий элемент, когда цикл возвращается.