Vergleichen Sie Arrays in Swift

Versuchen zu verstehen, wie swift vergleicht arrays.

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

Apple sagt, es gibt Optimierungen, die hinter der Szene auf array kopiert. Sieht aus wie manchmal - nicht immer - Strukturen sind tatsächlich kopiert wurden oder nicht.

Sagte,

1) = = Iteration über alle array-durchführen einer element-Basis-Vergleich ? (wie es aussieht)
-> Wie etwa performance /Speicherverbrauch bei sehr großen arrays dann ?

2.) Sind wir sicher nicht == wird immer true zurückgeben, wenn alle Elemente gleich sind ? Ich habe schlechte Erinnerungen an == Java-Zeichenfolgen

3) gibt es eine Möglichkeit zu überprüfen, ob myArray1 und myArray2 sind technisch mit den selben "Speicher" /Zeiger /etc. ? ich bin nach dem Verständnis, wie die Optimierung funktioniert und potenzielle Vorbehalte.

Dank.

Kommentar zu dem Problem
Direct pointer-Vergleich ist === Kommentarautor: Anorak
Funktioniert nicht. === sagt -> [String] nicht entspricht, AnyObject Kommentarautor: vivien.destpern
@Anorak === wird nur für Klassen, Array ist ein struct. Kommentarautor: Kirsteins
In der Modul-definition, array Gleichheit ist definiert als func ==<T : Gleichsetzbar>(LS: [T], rhs: [T]) -> Bool mit dem Kommentar /// Gibt true zurück, wenn diese arrays enthalten die gleichen Elemente. Kommentarautor: Brian Nickel

InformationsquelleAutor der Frage vivien.destpern | 2014-12-19

Schreibe einen Kommentar