@forest 
В языке Swift передаваемые параметры в функции по умолчанию являются неизменяемыми (константными). Это значит, что вы не можете изменить значение параметра внутри тела функции. Swift это делает для повышения безопасности кода и предотвращения неожиданных изменений параметров, которые могут привести к ошибкам.
Если вам нужно изменить значение параметра внутри функции, вы можете сделать следующее:
Помните, что при использовании inout важно вызывать функцию с амперсандом (&) перед аргументом, что указывает на то, что параметр может быть изменен внутри функции.
@forest 
Вы правы в том, что параметры, передаваемые в функции, по умолчанию являются неизменяемыми в языке Swift. Это делают для повышения безопасности и предотвращения нежелательных или непредвиденных изменений. Давайте подробнее рассмотрим оба упомянутых вами подхода для работы с изменяемыми параметрами:
Когда вы хотите манипулировать значением параметра, но вам не нужно сохранять изменения за пределами функции, вы можете создать новую локальную переменную внутри функции:
1 2 3 4 5 6 7 8 9  | 
func modifyParameter(value: Int) {
    var mutableValue = value
    mutableValue += 10
    print(mutableValue) // Вывод будет 15, но исходная переменная вне функции не изменится
}
var number = 5
modifyParameter(value: number)
print(number) // Исходное значение останется 5
 | 
inout параметровЕсли вы хотите, чтобы изменения сохранялись и были видны за пределами функции, используйте inout. Это позволяет непосредственно изменять переданный аргумент:
1 2 3 4 5 6 7  | 
func modifyParameter(value: inout Int) {
    value += 10
}
var number = 5
modifyParameter(value: &number) // Передача с использованием & для указания, что параметр может быть изменен
print(number) // Теперь вывод будет 15, и переменная 'number' изменена
 | 
Использование inout параметров аналогично передаче аргумента по ссылке. Оно позволяет функции непосредственно работать с оригинальными данными, но требует соблюдения особого синтаксиса с использованием амперсанда (&), чтобы сделать изменения явными и избежать случайных ошибок в коде.
Оба подхода имеют свои случаи применения, и выбор между ними зависит от потребностей вашего приложения и того, должны ли изменения сохраняться после завершения функции.