美文网首页
swift 高阶函数用法介绍

swift 高阶函数用法介绍

作者: 可乐小子 | 来源:发表于2024-04-07 13:51 被阅读0次

    Swift 中的高阶函数是一种特别强大的工具,它们接受函数作为参数或返回函数作为结果,体现了函数式编程风格的核心特性。Swift 标准库中的许多集合类型如 Array, Dictionary, 和 Sequence 都内置了一系列高阶函数,以下是一些最常用的:

    map(_:)

    接受一个闭包作为参数,遍历集合中的每个元素,并将闭包应用到每个元素上,返回一个新的集合,其中包含经过闭包处理后的新元素。
    Swift
    1let numbers = [1, 2, 3, 4]
    2let squares = numbers.map { 0 *0 } // 返回 [1, 4, 9, 16]
    filter(_:)

    同样接受一个闭包作为参数,该闭包返回一个布尔值。只有当闭包对于某个元素返回 true 时,该元素才会被包含在返回的新集合中。
    Swift
    1let evenNumbers = numbers.filter { $0 % 2 == 0 } // 返回 [2, 4]
    reduce(::) 或 reduce(into:_:)

    用于将集合中的所有元素组合成一个单一的值。闭包接受两个参数:累积值(accumulator)和下一个元素,每次迭代都会将下一个元素与累积值结合生成新的累积值。
    Swift
    1let sum = numbers.reduce(0, +) // 返回 10,计算所有数字之和
    flatMap(:) 或 compactMap(:)

    flatMap 将闭包应用于集合的每个元素,并将返回值扁平化地放入新集合中。如果闭包返回的是可展开的集合(如数组),则这些集合会被展开并合并到最终结果中。
    Swift
    1let strings = ["1", "2", "3"]
    2let numbersFromString = strings.flatMap { Int($0) } // 返回 [1, 2, 3]
    compactMap 类似于 flatMap,但仅保留非nil的映射结果,常用于过滤掉nil值。

    sort(by:)

    虽然不是严格意义上的高阶函数(因为它不直接接受或返回函数),但可以通过闭包定义排序规则:
    Swift
    1let unsortedNumbers = [3, 1, 4, 2]
    2let sortedNumbers = unsortedNumbers.sorted(by: { 0 <1 }) // 返回 [1, 2, 3, 4]
    通过这些高阶函数,Swift 编程可以变得更加简洁、高效且易于理解,有助于减少重复代码和提升代码复用性。

    相关文章

      网友评论

          本文标题:swift 高阶函数用法介绍

          本文链接:https://www.haomeiwen.com/subject/hrttxjtx.html