Swift에서 배열의 마지막 요소를 어떻게 가져 옵니까?


81

나는 이것을 할 수있다 :

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

하지만 확실히 더 예쁜 방법이 있습니까?


그게 뭐가 문제 야? 아마도 ".lastElement"메서드를 추가하기 위해 자체 확장을 제공 할 수 있습니다.
틸로

7
추악하다는 점을 제외하고는 아무 문제가 없습니다.
joseph.hainline 2014-06-04

1
잘못은 아니지만 일회성 오류가 발생하기 쉽습니다. 답변에서 언급했듯이 확장을 작성합니다.
thestoneage

Swift lastIndex에 Kotlin에서 사용할 수있는 var 가 있기를 바랐습니다 . 지금은 고수해야 할 것 같습니다 endIndex - 1.
aldok

답변:


87

업데이트 : 스위프트 2.0은 이제 포함 first:T?last:T?특성은 내장.


필요한 경우 자체 확장을 제공하여 내장 Swift API를 더 예쁘게 만들 수 있습니다. 예 :

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

이제 다음을 사용하여 모든 배열의 마지막 요소에 액세스 할 수 있습니다.

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

감사! BTW,을 endIndex통해 참조 할 필요가 없습니다 self.
Rudolf Adamkovič 2015 년

14
Xcode6-Beta5부터이 last속성은 기본 제공됩니다 (있는 그대로 first). nil배열이 비어 있으면 반환 합니다.
Pang

2
이 구현의 문제점은 Array가 비어 있으면 충돌이 발생한다는 것입니다.
루카 안젤 레티

5
먼저하지 않으면 당신이 마지막이야 - 리키 바비
케빈 Burandt

1
Swift 3에서는 더 이상 필요하지 않습니다. 더 나은 답변은 아래를 참조하세요. .last가 내장되어 있습니다.
sww314

101

현재 beta5지금이 firstlast특성

배열이 처음과 마지막을 획득하는 것 외에도 lazy 컬렉션은 isEmpty뿐만 아니라 첫 번째 (양방향으로 인덱싱 할 수있는 경우 마지막)도 구현합니다.


8
이 문서에 대한 링크가 포함 좋을 것이다
팀 피터슨

1
말하지 않는, @ joseph.hainline : 알
에릭 아이그너

예를 들어 보면 좋을 것 같습니다
KML

감사합니다! 흥미롭게도 Xcode 8.3.3의 iOS 10 마스터 / 세부 템플릿은 x.last가 아닌 x [x.count-1] 형식의 코드를 사용하지만 훨씬 더 길다.
Glenn

23

last속성 을 사용하여 Array의 마지막 요소를 가져올 수 있습니다 .

암호:

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


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.