Для оператора параметрів функції ми використовуємо:
let (це оператор за замовчуванням, тому ми можемо опустити let ), щоб зробити параметр постійним (це означає, що ми не можемо змінювати навіть локальну копію);
var, щоб зробити його змінним (ми можемо модифікувати його локально, але це не буде впливати на зовнішню змінну, передану функції); і
inout, щоб зробити його параметром вхідного сигналу. Вхід означає, що фактично передається змінна за посиланням, а не за значенням. І воно вимагає не лише прийняття значення за посиланням, а й передачі його за посиланням, тому передайте його разом із & - foo(&myVar)
замість простоfoo(myVar)
Тож роби так:
var arr = [1, 2, 3]
func addItem(inout localArr: [Int]) {
localArr.append(4)
}
addItem(&arr)
println(arr) // it will print [1, 2, 3, 4]
Якщо бути точним, це не просто посилання, а реальний псевдонім для зовнішньої змінної, тому ви можете зробити такий трюк з будь-яким типом змінної, наприклад, з цілим числом (ви можете призначити нове значення для нього), хоча це може бути не хороша практика, і це може бути заплутаним для зміни подібних примітивних даних.
account
глобальну змінну і визначенняchats
властивості ,ChatsViewController
як:var chats: [Chat] { return account.chats }
.