Треки
/
Swift
Swift
/
Салабус
/
Параметри inout
Па

Параметри inout у Swift

1 вправа

Про концепцію Параметри inout

Усередині тіла функції параметри поводяться як константи, а не як змінні; спроба змінити значення параметра спричинить помилку під час компіляції. Якщо функція хоче змінити значення параметра, їй потрібно скористатися вхідно-вихідним параметром, щоб зробити цю змінність явною.

Щоб скористатися вхідно-вихідними параметрами, програміст має бути певен із трьох речей:

  1. У визначенні функції вхідно-вихідні параметри потрібно явно позначити, написавши ключове слово inout між : і назвою типу в анотації типу параметра.
  2. Значення, яке передають у вхідно-вихідний параметр, має бути оголошене як змінна, а не як константа. Так само воно не може бути літералом.
  3. Перед назвою змінної у виклику функції потрібно поставити &, явно позначаючи її як таку, що її можна змінювати.

Коли це зроблено, функція створює внутрішню копію вхідно-вихідного параметра, змінює її, як зазначено в тілі функції, а потім, коли функція повертає керування, копіює зміни назад у змінну, яку було передано.

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)` спричиняє помилку компіляції.
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці

Вивчити концепцію Параметри inout