arrays - Swift:通过引用传递数组?

标签 arrays swift pass-by-reference

我想通过引用将我的 Swift Array account.chats 传递给 chatsViewController.chats(这样当我向 account.chatschatsViewController.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/

相关文章:

arrays - ruby 创建对象随机次数

ios - 找不到目标 'MyCustomFramework' 的模块 'x86_64-apple-ios-simulator' ;找到 : arm64, armv7-apple-ios,arm64-apple-ios,arm,armv7

ios - 从字典的 NSMutableArray 获取字典

java - C++ 中传递的函数参数与 Java 中传递的函数参数

c++ * vs & 在函数声明中

php - mysql_fetch_array() 无法正常工作,缺少大多数值

javascript - 在 JavaScript 中,console.log 为我提供了 for 循环中的每个值。但是 var.text 仅显示最后一个值。为什么是这样?

java - 变量必须提供维度表达式或数组初始值设定项错误

ios - 将新的 UIImage 添加到 SubView 需要很长时间

python - 通过对象引用的良好做法