Wie rufe ich das letzte Element eines Arrays in Swift ab?


80

Ich kann dies tun:

var a = [1,5,7,9,22]
a.count               // 5
a[a.count - 1]        // 22
a[a.endIndex - 1]     // 22

aber sicher gibt es einen schöneren Weg?


Was ist daran falsch? Vermutlich können Sie Ihre eigene Erweiterung bereitstellen, um eine ".lastElement" -Methode hinzuzufügen.
Thilo

7
Nichts ist falsch daran, außer dass es hässlich ist.
Joseph.Hainline

1
Vielleicht nicht falsch, aber anfällig für einmalige Fehler. Ich würde eine Erweiterung schreiben, wie in den Antworten erwähnt.
Thestoneage

Ich hatte gehofft, Swift hat lastIndexvar, das in Kotlin erhältlich ist. Scheint, als müsste ich mich vorerst daran halten endIndex - 1.
Aldok

Antworten:


85

Update: Swift 2.0 enthält jetzt first:T?und last:T?Eigenschaften eingebaut.


Bei Bedarf können Sie die integrierte Swift-API hübscher gestalten, indem Sie Ihre eigenen Erweiterungen bereitstellen, z.

extension Array {
    var last: T {
        return self[self.endIndex - 1]
    }
}

Auf diese Weise können Sie jetzt auf das letzte Element eines Arrays zugreifen mit:

[1,5,7,9,22].last

Vielen Dank! Übrigens endIndexmuss nicht über referenziert werden self.
Rudolf Adamkovič

14
Ab Xcode6-Beta5 ist die lastEigenschaft (wie sie ist first) integriert. Es wird zurückgegeben, nilwenn das Array leer ist.
Pang

2
Das Problem bei dieser Implementierung ist, dass sie abstürzt, wenn das Array leer ist.
Luca Angeletti

5
Wenn Sie nicht der Erste sind, sind Sie der Letzte - Ricky Bobby
Kevin Burandt

1
Sie brauchen dies in Swift 3 nicht mehr. Weitere Antworten finden Sie weiter unten. .last ist eingebaut.
sww314

101

Ab beta5sofort gibt es ein firstund lastEigentum

Zusätzlich zur ersten und letzten Array-Erfassung implementieren die Lazy-Sammlungen auch first (und last, wenn sie bidirektional indizieren können) sowie isEmpty.


8
wäre schön, einen Link zu dieser Dokumentation aufzunehmen
tim peterson

1
Sag es mir nicht, sag es @ joseph.hainline :)
Erik Aigner

Wäre schön mit einem Beispiel
KML

Danke dafür! Interessanterweise verwendet die iOS 10-Master- / Detailvorlage in Xcode 8.3.3 weiterhin Code der Form x [x.count-1] - jedoch VIEL länger - anstelle von x.last.
Glenn

22

Sie können das letzte Element eines Arrays mithilfe der lastEigenschaft abrufen.

Code:

let lastElement = yourArray.last

9

Sie können auch das letzte Element aus dem Array abrufen und entfernen
removeLast()

Beispiel:

var array = [1, 2, 3]
let removed = array.removeLast()
// array is [1, 2]
// removed is 3

Entnommen aus Apple-Dokumenten (diese Quelle ist abgelaufen, aber Beispiele finden Sie auf dieser Dokumentationsseite )


1
Im Gegensatz zur ObjC removeLast-Funktion ist Swift 4 nicht intelligent genug, um zu wissen, ob das Array keine Elemente mehr enthält, und stürzt ab, wenn es in einem leeren Array versucht wird.
JScarry


1

schnell bearbeiten 2.2

extension Array {
    var last: Element {
        return self[self.endIndex - 1]
    }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.