是否有可能讓結構像對象一樣行爲。 F.e .:是否有可能避免迅速結構變異?
var arr = [1]
let arr1 = arr
arr.append(1)
我想讓arr1與arr相同。是唯一的選擇包裝到一個對象?
是否有可能讓結構像對象一樣行爲。 F.e .:是否有可能避免迅速結構變異?
var arr = [1]
let arr1 = arr
arr.append(1)
我想讓arr1與arr相同。是唯一的選擇包裝到一個對象?
你所描述的是Swift中結構和對象之間行爲的根本區別之一。結構總是按值複製。所以不,如果你想通過引用語義複製,你將不得不使用一個對象。
除了@ ChrisK的回答,我沒有看到從不同變量引用相同數組的許多實際用法,除非您想要實現的是將它傳遞給函數/方法 - 在這種情況下,您可以使用可以通過使用inout
修改參考:
var array = [1, 2, 3]
func changeArray(inout array: [Int]) {
array.append(4)
}
changeArray(&array)
瞭解更多關於In-Out Parameters
更新你提到在您的評論很好用的情況。這導致了我的解決方案,這是一種解決方法 - 重要的是它的工作原理。使用NSMutableArray
代替swift數組。這是一門課程,所以它具有您尋找的所有優點。
var arr: NSMutableArray = [
NSMutableArray(array: [1, 2, 3])
]
arr[0].addObject(4)
arr[0].replaceObjectAtIndex(0, withObject: -1)
arr // This prints [[-1, 2, 3, 4]]
的可能重複的[夫特::通過引用傳遞數組(http://stackoverflow.com/questions/24250938/swift-pass-array-by-reference) – 2014-09-23 19:49:50
所以你不從遊樂場實施例不想避免結構變異。你想擁抱結構變異! – matt 2014-09-23 19:55:54