Para el operador de parámetro de función usamos:
let (es el operador predeterminado, por lo que podemos omitir let ) para hacer que un parámetro sea constante (significa que no podemos modificar ni siquiera la copia local);
var para hacerlo variable (podemos modificarlo localmente, pero no afectará la variable externa que se ha pasado a la función); e
inout para convertirlo en un parámetro in-out. In-out significa, de hecho, pasar variables por referencia, no por valor. Y requiere no solo aceptar el valor por referencia, sino también pasarlo por referencia, así que páselo con & - en foo(&myVar)
lugar de solofoo(myVar)
Entonces hazlo así:
var arr = [1, 2, 3]
func addItem(inout localArr: [Int]) {
localArr.append(4)
}
addItem(&arr)
println(arr) // it will print [1, 2, 3, 4]
Para ser exactos, no es solo una referencia, sino un alias real para la variable externa, por lo que puede hacer un truco con cualquier tipo de variable, por ejemplo, con un entero (puede asignarle un nuevo valor), aunque puede no ser un es una buena práctica y puede ser confuso modificar los tipos de datos primitivos como este.
account
una variable global y definir lachats
propiedad deChatsViewController
que:var chats: [Chat] { return account.chats }
.