Swift последний (: где) элемент в массиве - PullRequest
0 голосов
/ 03 сентября 2018

Для массива:

var arr = [3,2,1,2,1,4,5,8,6,7,4,2]

Я могу найти первый соответствующий элемент

arr.first(where: {$0 == 2})! 

Но последний

arr.last(where: {$0 == 2})

Возвращает:

не может вызвать значение нефункционального типа 'Int?'

Почему?

Ответы [ 2 ]

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

Как уже упоминал rmaddy, этот метод все еще находится в бета-версии. Если вы хотите добавить эту функцию также в Swift 4.1, вы можете расширить BidirectionalCollection следующим образом:

extension BidirectionalCollection {
    func last(where predicate: (Element) throws -> Bool) rethrows -> Element? {
        return try reversed().first(where: predicate)
    }
}
0 голосов
/ 03 сентября 2018

last(where:) был добавлен в Swift 4.2 (Xcode 10).

Если вам нужно найти последнее совпадение, используя Swift 4.1 или более раннюю версию, вы можете сделать:

let last = arr.reversed().first { $0 == 2 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...