Для оператора параметра функции мы используем:
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 }
.