Ответ
В Kotlin аргументы передаются по значению (для примитивов и ссылок на объекты). Однако, если передается объект, его внутреннее состояние можно изменять.
Пример:
fun modifyList(list: MutableList<Int>) {
list.add(42) // изменяет переданный список
}
fun main() {
val myList = mutableListOf(1, 2, 3)
modifyList(myList)
println(myList) // [1, 2, 3, 42]
}
Нюансы:
- Передача val/var не влияет на поведение внутри функции.
- Переменная-ссылка копируется, но сам объект остается тем же.
- Для примитивов изменение внутри функции не влияет на оригинал.
Если нужно запретить изменение, используйте Immutable коллекции (List вместо MutableList).