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.