代码之家  ›  专栏  ›  技术社区  ›  stevenpcurtis

数组中的最后一个(:where)元素

  •  0
  • stevenpcurtis  · 技术社区  · 6 年前

    对于数组:

    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 回复  |  直到 6 年前
        1
  •  2
  •   rmaddy    6 年前

    last(where:) 在Swift 4.2(代码10)中添加。

    如果需要使用Swift 4.1或更早版本查找最后一个匹配项,可以执行以下操作:

    let last = arr.reversed().first { $0 == 2 }
    
        2
  •  1
  •   Leo Dabus    6 年前

    正如rmaddy已经提到的,这个方法仍处于测试阶段。如果您还想将此功能添加到Swift 4.1中,您可以扩展 BidirectionalCollection

    extension BidirectionalCollection {
        func last(where predicate: (Element) throws -> Bool) rethrows -> Element? {
            return try reversed().first(where: predicate)
        }
    }