Swiftで配列の最後の要素をフェッチするにはどうすればよいですか?


81

私がすることができます:

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

しかし、確かにもっときれいな方法がありますか?


その方法の何が問題になっていますか?おそらく、「。lastElement」メソッドを追加するための独自の拡張子を提供できます。
Thilo 2014年

7
それが醜いことを除いて、それは何も悪いことではありません。
joseph.hainline 2014年

1
間違いではないかもしれませんが、1回限りのエラーが発生しがちです。回答に記載されているように拡張機能を作成します。
thestoneage 2014年

SwiftにlastIndexvarがあり、Kotlinで利用できることを期待していました。endIndex - 1今のところは固執しなければならないようです。
aldok

回答:


87

更新:Swift 2.0にはfirst:T?last:T?プロパティが組み込まれています。


必要に応じて、独自の拡張機能を提供することで、組み込みのSwiftAPIをより美しくすることができます。

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

これにより、次のようにして任意の配列の最後の要素にアクセスできるようになります。

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

ありがとう!ところで、をendIndex介して参照する必要はありませんself
ルドルフアダムコビッチ2014年

14
Xcode6-Beta5の時点で、lastプロパティは組み込みです(そのままfirst)。nil配列が空の場合に返されます。
パン2014

2
この実装の問題は、配列が空の場合にクラッシュすることです。
ルカアンジェレッティ2015

5
あなたが最初ではない場合あなたは最後です-リッキーボビー
ケビンブラント2017年

1
Swift 3では、これはもう必要ありません。より良い答えについては、以下を参照してください。.lastが組み込まれています。
sww314 2017

101

のとしてbeta5今そこにあるfirstlast財産

配列が最初と最後を取得することに加えて、レイジーコレクションはisEmptyと同様に、最初(および双方向でインデックスを作成できる場合は最後)も実装します。


8
このドキュメントへのリンクを含めるとよいでしょう
tim peterson 2014年

1
教えてはいけません、@ joseph.hainlineに教えてください:)
Erik Aigner

例を挙げればいいでしょう
KML 2015

これをありがとう!興味深いことに、Xcode8.3.3のiOS10マスター/詳細テンプレートは、x.lastではなくx [x.count-1]の形式のコードを使用しますが、はるかに長くなります。
グレン

23

lastプロパティを使用して、配列の最後の要素をフェッチできます。

コード:

let lastElement = yourArray.last

9

配列から最後の要素を取得および削除することもできます
removeLast()

例:

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

Appleのドキュメントから取得(このソースは期限切れですが、このドキュメントページで例を見つけることができます


1
ObjC removeLast機能とは異なり、Swift 4は、配列に要素が残っていないかどうかを知るのに十分なほど賢くはなく、空の配列で試行するとクラッシュします。
JScarry 2017


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.