https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html
Параметри введення
Параметри функції за замовчуванням є константами. Спроба змінити значення параметра параметра зсередини тіла цієї функції призводить до помилки часу компіляції. Це означає, що ви не можете змінити значення параметра помилково. Якщо ви хочете, щоб функція змінила значення параметра, і ви хочете, щоб ці зміни зберігалися після завершення виклику функції, визначте цей параметр як параметр входу.
Ви вводите параметр входу, розміщуючи ключове слово inout безпосередньо перед типом параметра. Параметр вводу має значення, яке передається функції, модифікується функцією і передається назад із функції заміни вихідного значення. Для детального обговорення поведінки параметрів вхідних даних та пов'язаних з ними оптимізацій компілятора див. Параметри вводу.
Ви можете передати змінну лише як аргумент для параметра входу. Ви не можете передавати постійне або буквальне значення в якості аргументу, оскільки константи і літерали не можуть бути змінені. Ви розміщуєте ampersand (&) безпосередньо перед ім'ям змінної, коли передаєте її як аргумент параметру входу, щоб вказати, що вона може бути змінена функцією.
ПРИМІТКА
Параметри входу не можуть мати значення за замовчуванням, а різні параметри не можуть бути позначені як inout.
Ось приклад функції під назвою swapTwoInts ( : :), яка має два цілих цілих параметри під назвою a і b:
func swapTwoInts(_ a: inout Int, _ b: inout Int) {
let temporaryA = a
a = b
b = temporaryA
}
Функція swapTwoInts ( : :) просто замінює значення b на a, а значення a на b. Функція виконує цю заміну, зберігаючи значення a у тимчасовій постійній, званій тимчасовійA, присвоюючи значення b до a, а потім призначаючи тимчасовеA b.
Ви можете викликати функцію swapTwoInts ( : :) з двома змінними типу Int, щоб поміняти свої значення. Зауважте, що імена someInt та anotherInt мають префікс із символом ampersand, коли вони передаються функції swapTwoInts ( : :)
var someInt = 3
var anotherInt = 107
swapTwoInts(&someInt, &anotherInt)
print("someInt is now \(someInt), and anotherInt is now \(anotherInt)")
// Prints "someInt is now 107, and anotherInt is now 3"
Наведений вище приклад показує, що вихідні значення someInt та anotherInt змінюються функцією swapTwoInts ( : :), хоча вони спочатку були визначені поза функцією.
ПРИМІТКА
Параметри вхідного виходу не збігаються з поверненням значення функції. Приклад swapTwoInts, наведений вище, не визначає тип повернення або повертає значення, але він все ще змінює значення someInt та anotherInt. Параметри вводу-виходу є альтернативним способом для того, щоб функція мала вплив за межі сфери її функції.
public func getQuestionList(inout language: String) -> NSArray