Усередині тіла функції параметри поводяться як константи, а не як змінні; спроба змінити значення параметра спричинить помилку під час компіляції. Якщо функція хоче змінити значення параметра, їй потрібно скористатися вхідно-вихідним параметром, щоб зробити цю змінність явною.
Щоб скористатися вхідно-вихідними параметрами, програміст має бути певен із трьох речей:
inout між : і назвою типу в анотації типу параметра.&, явно позначаючи її як таку, що її можна змінювати.Коли це зроблено, функція створює внутрішню копію вхідно-вихідного параметра, змінює її, як зазначено в тілі функції, а потім, коли функція повертає керування, копіює зміни назад у змінну, яку було передано.
func updateVersion(_ record: inout (version: Int, title: String)) {
record.version += 1
}
var dbRecord = (version: 2, title: "Exercism")
updateVersion(&dbRecord)
// dbRecord is now (3, "Exercism")
Є ще кілька додаткових правил щодо вхідно-вихідних параметрів, про які варто знати.
1. Всередині функції з вхідно-вихідними параметрами не можна посилатися на змінну, яку передали як вхідно-вихідний параметр.
2. Ту саму змінну не можна передати як кілька вхідно-вихідних параметрів в одній функції.
Наприклад, `inoutFunc(&mutVar, &mutVar)` спричиняє помилку компіляції.