Как я могу получить предпоследний элемент в массиве в Swift? - PullRequest
0 голосов
/ 23 сентября 2018

Я хочу, чтобы от второго до последнего элемента не было двух последних, как в:

let streets = ["Adams", "Bryant", "Channing", "Douglas", "Evarts"]
let penultimate = streets.suffix(2)
print(penultimate) // ["Douglas", "Evarts"]

Кроме того, я не хочу использовать синтаксис streets[3], потому что массив постоянно заполняетсязаписи.

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Вы можете просто отбросить последний элемент вашей коллекции и вернуть последний элемент результата:

extension BidirectionalCollection {
    var elementBeforeLast: Element? {
        return dropLast().last
    }
}

Использование:

if let elementBeforeLast = streets.elementBeforeLast {
    print(elementBeforeLast)  // "Douglas"
}
0 голосов
/ 23 сентября 2018

Только что написал расширение

extension Array {
  func penultimate() -> Element? {
      if self.count < 2 {
          return nil
      }
      let index = self.count - 2
      return self[index]
  }
}

Вы можете использовать его как

yourArr.penultimate()

Вот пример Playground, он работает как задумано

playground

...