試圖理解swift如何比較數組。快速比較陣列
var myArray1 : [String] = ["1","2","3","4","5"]
var myArray2 : [String] = ["1","2","3","4","5"]
// 1) Comparing 2 simple arrays
if(myArray1 == myArray2) {
println("Equality")
} else {
println("Equality no")
}
// -> prints equality -> thanks god
// 2) comparing to a "copy" of an array
// swift copies arrays when passed as parameters (as per doc)
func arrayTest(anArray: [String]) -> Bool {
return anArray == myArray1
}
println("Array test 1 is \(arrayTest(myArray1))")
println("Array test 2 is \(arrayTest(myArray2))")
// equality works for both
myArray2.append("test")
println("Array test 2 is \(arrayTest(myArray2))")
// false (obviously)
myArray2.removeAtIndex(5)
println("Array test 2 is \(arrayTest(myArray2))")
// true
蘋果公司表示,在陣列副本的背景下有優化。看起來有時 - 並非總是 - 結構實際上是被複制或不是。
這就是說,
1)是==遍歷所有陣列來執行基於元素的比較? (看起來像) - >那麼如何在非常大的數組上使用性能/內存?
2)如果所有元素都相等,我們肯定==會永遠返回true嗎?我在Java字符串上有==的錯誤回憶
3)有沒有辦法檢查myArray1和myArray2是否在技術上使用相同的「內存位置」/指針/等?我瞭解了優化如何工作和潛在的警告。
謝謝。
直接指針比較是'===' – Anorak
不起作用。 ===表示 - > [String]不符合AnyObject –
@Anorak'==='僅用於類,'Array'是一個結構。 – Kirsteins