Swift高阶函数contains allSatisfy reversed lexicographicallyPrecedes用法示例

 更新时间:2023年06月20日 11:52:12   作者:loongod  
这篇文章主要为大家介绍了Swift高阶函数contains allSatisfy reversed lexicographicallyPrecedes用法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、contains

返回一个布尔值,指示序列的每个元素是否满足给定的条件。如果有一个满足即返回。

     let expenses = [21.37, 55.21, 9.32, 10.18, 388.77, 11.41]
     let hasBigPurchase = expenses.contains { $0 > 100 }
     // 'hasBigPurchase' == true

Sequence协议源码

  @inlinable
  public func contains(_ element: Element) -> Bool {
    if let result = _customContainsEquatableElement(element) {
      return result
    } else {
      return self.contains { $0 == element }
    }
  }
  @inlinable
  public func contains(
    where predicate: (Element) throws -> Bool
  ) rethrows -> Bool {
    for e in self {
      if try predicate(e) {
        return true
      }
    }
    return false
  }

二、allSatisfy

返回一个布尔值,指示序列的每个元素是否满足给定的条件。需要所有元素都满足。

        let names = ["Sofia", "Camilla", "Martina", "Mateo", "Nicolás"]
        let allHaveAtLeastFive = names.allSatisfy({ $0.count >= 5 })
        // allHaveAtLeastFive == true

Sequence协议源码

allSatisfy里面调用了contains方法

  @inlinable
  public func allSatisfy(
    _ predicate: (Element) throws -> Bool
  ) rethrows -> Bool {
    return try !contains { try !predicate($0) }
  }

三、reversed

返回一个数组,该数组以相反的顺序包含此序列的元素。

let list = [1, 2, 3, 4, 5]
let ret = list.reversed()
print(Array(ret))
---console
[5, 4, 3, 2, 1]

Sequence协议源码

  @inlinable
  public __consuming func reversed() -> [Element] {
    // FIXME(performance): optimize to 1 pass?  But Array(self) can be
    // optimized to a memcpy() sometimes.  Those cases are usually collections,
    // though.
    var result = Array(self)
    let count = result.count
    for i in 0..<count/2 {
      result.swapAt(i, count - ((i + 1) as Int))
    }
    return result
  }

四、lexicographicallyPrecedes

返回一个布尔值,该值指示在字典顺序(字典)中该序列是否在另一个序列之前,使用给定条件语句比较元素。

let list = [1, 2, 3, 4, 5]
let list2 = [2, 2, 3, 5]
let ret1 = list.lexicographicallyPrecedes(list2)
let ret2 = list2.lexicographicallyPrecedes(list)
print(ret1, ret2)
---console
true false

Sequence协议源码

  @inlinable
  public func lexicographicallyPrecedes<OtherSequence: Sequence>(
    _ other: OtherSequence
  ) -> Bool where OtherSequence.Element == Element {
    return self.lexicographicallyPrecedes(other, by: <)
  }
  @inlinable
  public func lexicographicallyPrecedes<OtherSequence: Sequence>(
    _ other: OtherSequence,
    by areInIncreasingOrder: (Element, Element) throws -> Bool
  ) rethrows -> Bool 
  where OtherSequence.Element == Element {
    var iter1 = self.makeIterator()
    var iter2 = other.makeIterator()
    while true {
      if let e1 = iter1.next() {
        if let e2 = iter2.next() {
          if try areInIncreasingOrder(e1, e2) {
            return true
          }
          if try areInIncreasingOrder(e2, e1) {
            return false
          }
          continue // Equivalent
        }
        return false
      }
      return iter2.next() != nil
    }
  }

以上就是Swift高阶函数contains allSatisfy reversed lexicographicallyPrecedes用法示例的详细内容,更多关于Swift高阶函数用法的资料请关注脚本之家其它相关文章!

相关文章

  • swift学习文档(笔记)

    swift学习文档(笔记)

    这篇文章主要介绍了学习swift的笔记,swift最近也比较热,需要的朋友可以参考下
    2014-09-09
  • Swift数组详细用法解析

    Swift数组详细用法解析

    这篇文章主要为大家详细介绍了Swift数组详细用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Swift编程中实现希尔排序算法的代码实例

    Swift编程中实现希尔排序算法的代码实例

    希尔排序是对插入排序的一种改进版本,算法本身并不稳定,存在优化空间,这里我们来讲一下希尔排序的大体思路及Swift编程中实现希尔排序算法的代码实例
    2016-07-07
  • 详解Swift 结构体

    详解Swift 结构体

    这篇文章主要介绍了Swift 结构体的相关资料,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-09-09
  • Swift开发应用中如何更方便地使用颜色详解

    Swift开发应用中如何更方便地使用颜色详解

    这篇文章主要给大家介绍了关于Swift开发应用中如何更方便地使用颜色的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • 程序迁移到swift 3.0的一些实用技巧

    程序迁移到swift 3.0的一些实用技巧

    Swift项目为适配iOS10,无奈只能更新Xcode 8 ,可是发现一入3.0深似海,从此幸福是路人。于是边摸索边修改,终于完成了代码迁移。节后在完成手头工作后,整理思路把Swift3.0迁移的一些实用技巧分享大家,需要的朋友可以参考下。
    2017-03-03
  • swift依赖注入和依赖注入容器详解

    swift依赖注入和依赖注入容器详解

    这篇文章主要为大家介绍了swift依赖注入和依赖注入容器详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Swift实现JSON转Model的方法及HandyJSON使用讲解

    Swift实现JSON转Model的方法及HandyJSON使用讲解

    这篇文章给大家介绍了Swift实现JSON转Model的方法及HandyJSON使用讲解,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-07-07
  • Swift实现表格视图单元格单选(1)

    Swift实现表格视图单元格单选(1)

    这篇文章主要为大家详细介绍了Swift实现表格视图单元格单选,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Swift能代替Objective-C吗?

    Swift能代替Objective-C吗?

    这是我在网上上看到的答案,复制粘贴过来和大家分享一下,因为我和很多人一样很关心Swift的出现对Mac开发的影响和对Objective-C的影响。
    2014-09-09

最新评论