Swift创建对可变数组的引用
参见英文答案 >
Reference to array inside function in Swift????????????????????????????????????3个
更新Swift数组太奇怪了.如果需要这种行为,我认为使用NSMutableArrays更可靠. 我知道Swift通常按值而不是通过引用传递数组,但我需要能够在代码中传递引用,如下所示: var arr1 = [1,2,4] var arr2 = [4,6,3] var result = pickOne() ? arr1 : arr2 result[2] = 7 // one of these should be updated,currently they are just as initialized println(arr1) println(arr2) 我想动态选择两个数组中的一个,并对该数组进行更改.两个数组都是相同的大小和内容类型,我只会更改元素,而不是追加或删除.我怎样才能做到这一点? 编辑:是否只使用NSMutableArray的答案? 只是为了澄清:pickOne()是我已经拥有的函数,并且基于该函数的结果我想要修改第一个或第二个数组.所以我不需要帮助决定选择哪个.我需要帮助找出如何对所需的数组进行修改(并且会有几个),而无需检查每个修改使用哪个数组. 我可以这样做: if pickOne() { // work on arr1 // ... } else { // work on arr2 // ... } // do some other work // ... if pickOne() { // work more on arr1 // ... } else { // work more on arr2 // ... } // do yet another set of things // ... if pickOne() { // work again on arr1 // ... } else { // work again on arr2 // ... } 但这变得很快. 编辑 var result = pickOne() ? UnsafeMutableBufferPointer(start: &arr1,count: arr1.count) : UnsafeMutableBufferPointer(start: &arr2,count: arr2.count) 我并不太关心引用是无主的,因为数组实际上是自我强大的属性,所以不应该真正意外释放,但使用肯定看起来很难看.当你尝试做一些如此原始的事情时,你需要调用具有可怕名称的函数,这是非常令人失望的. 解决方法
你不能用Swift Array结构做到这一点,见下文:
“字符串,数组和字典的赋值和复制行为 此行为与Foundation中的NSString,NSArray和NSDictionary不同,它们实现为类,而不是结构. NSString,NSArray和NSDictionary实例始终作为对现有实例的引用进行分配和传递,而不是作为副本“ 摘录自:Apple Inc.“The Swift Programming Language.”iBooks. https://itun.es/ca/jEUH0.l (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |