我想通过引用将我的 Swift Array
account.chats
传递给 chatsViewController.chats
(这样当我向 account.chats
,chatsViewController.chats
仍然指向 account.chats
)。也就是说,当 account.chats
的长度发生变化时,我不希望 Swift 将两个数组分开。
最佳答案
对于函数参数运算符,我们使用:
let
(它是默认操作符,所以我们可以省略 let)使参数常量(这意味着我们甚至不能修改本地副本);< br/>
var
使其成为变量(我们可以在本地修改它,但不会影响传递给函数的外部变量);和
inout
使其成为输入输出参数。 In-out 实际上意味着通过引用传递变量,而不是通过值。而且它不仅需要通过引用接受值,还需要通过引用传递它,所以用 &
- foo(&myVar)
传递它而不仅仅是 foo(myVar)
那么这样做:
var arr = [1, 2, 3]
func addItem(_ localArr: inout [Int]) {
localArr.append(4)
}
addItem(&arr)
print(arr) // it will print [1, 2, 3, 4]
准确地说,它不仅仅是一个引用,而是外部变量的一个真正的别名,所以你可以对任何变量类型做这样的技巧,例如整数(你可以给它赋新值),尽管它可能这不是一个好的做法,像这样修改原始数据类型可能会造成混淆。
关于arrays - Swift:通过引用传递数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24250938/