Swift 中的高阶函数

Swift 高阶函数 Swift 高阶函数 高阶函数的定义: 在 Wikipedia 中,是这么定义高阶函数(higher-order function)的,如果一个函数: 接收一个或多个函数当作参数 把一个函数当作返回值 至少满足以上条件中的一个的函数,那么这个函数就被称作高阶函数。 使用高阶函数进行函数式编程的优势: 简化代码 使逻辑更加清晰 当数据比较大的时候,高阶函数会比传统实现更快,因为它可以并行执行(... 阅读详情

一、概念

  • 高阶函数是将一个或多个函数作为参数或返回一个函数作为其结果的函数

二、Swift的集合类型中的高阶函数

1、Map

  • 对于原始集合里的每一个元素,以一个变换后的元素替换之形成一个新的集合
let numbers = [1, 2, 4, 5, 10]
print(numbers.map{ $0 * 10 })   //打印: [10, 20, 40, 50, 100]
//将 [1, 2, 4, 5, 10] 变成 ["1", "2", "4", "5", "10"]
print(numbers.map({ (value) -> String in
    return String(value)
}))
// Swift中闭包是函数的唯一参数或是其最后一个参数时,map的()可以被省略
numbers.map { (value) -> String in
    return String(value)
}
numbers.map { value in String(value)}
print(numbers.map{ String($0)})   //直接通过$0,$1,$2来顺序调用闭包的参数
//以上四种方法都是等价的

2、filter

  • 对于原始集合里的每一个元素,通过判定来将其丢弃或者放进新集合
//filter:保留符合条件的元素
let numbers = [1, 2, 4, 5, 10]
print(numbers.filter{ $0 > 4})      //打印: [5, 10]

3、reduce

  • 对于原始集合里的每一个元素,作用于当前累积的结果上
//reduce: 作用于当前累积的结果上
let numbers = [1, 2, 4, 5, 10]
print(numbers.reduce(100, { $0 + $1 }))   //打印: 122
// 100 是初始值, 将所有数相加: 100 + 1 + 2 + 4 + 5 + 10 = 122

4、flatMap

  • 对于元素是集合的集合,可以得到单级的集合
//flatMap:对于元素是集合的集合,可以得到单级的集合
let arrayNumbers = [[1, 2, 3], [4, 5, 6], [7, 8, 9 ]]
print(arrayNumbers.flatMap{ $0 })  //打印: [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(arrayNumbers.flatMap{ $0.map{ $0 * 10} })  //打印: [10, 20, 30, 40, 50, 60, 70, 80, 90]
print(arrayNumbers.flatMap{ $0.filter{ $0 > 4 }})  //打印: [5, 6, 7, 8, 9]

5、compactMap

  • 过滤空值
//compactMap:过滤空值
let names: [String?] = ["zhangsan", nil, "lisi", "wangwu", nil,  "zhaoliu"]
print(names.count)    // 6
print(names.compactMap{ $0 })   //打印: ["zhangsan", "lisi", "wangwu", "zhaoliu"],过滤了空值
//打印不是空值的字符串的个数
print(names.compactMap{ $0?.count })   // [8, 4, 6, 7]
17、Swift 标准库中的高阶函数 本文详细介绍了 Swift 标准库中的常用高阶函数,包括 map、compactMap、filter、reduce 和 sorted 等,并通过示例代码展示了它们的具体用法。此外,还探讨了柯里化、参数翻转、函数合并等高级函数技术,以及高阶函数在实际项目中的应用场景和性能优化建议,帮助开发者编写更简洁、高效的 Swift 代码。 阅读详情

相关推荐

16、Swift 中的指针、高阶函数及相关概念解析

本文深入解析了 Swift 编程语言中的指针操作和高阶函数。内容涵盖指针的基本使用、内存分配与绑定、不安全操作的风险及应用,以及高阶函数的定义、调用形式、返回类型和在标准库中的实际应用。通过示例代码详细说明了如何安全有效地使用这些特性,同时提醒开发者在使用指针和不安全操作时需要注意的事项。适合有一定 Swift 基础、希望深入理解底层操作和函数式编程的开发者。

Python的专栏 66

Swift 高阶函数详解(forEach、filter、map、flatMap、compactMap、reduce、sorted)

现在这篇关于高阶函数的介绍,它来了。内容主要是介绍 forEach、filter、map、flatMap、compactMap、reduce、sorted等 7 个函数的作用,以及他们的使用方式。本文可以当做字典按需查阅。

Veggie的博客 4380

swift 常用高阶函数分享

map var arr = [1, 2, 3] //map函数是有返回值的,想要arr里面的值map过去需要arr重新接收新值 arr.map { (a : Int) -> Int in return a * 2 } //这种写法只是尾随闭包的简写。。 arr = arr.map { $0 * 2 } flatMap //floatMap函数可以降维 var arr1 = [[1, 2], [4, 5], [6, 7]] var aaa = arr1.flatMap { $0 } //floatMap函数去空作用,还会解包数据 var arr2 = [swift, nil

Swift的高阶函数

Swift的高阶函数swift常用高阶函数1. map2. flatMap3. filter4. reduce swift常用高阶函数 swift中比较常用的高阶函数有:map、flatMap、filter、reduce 1. map map可以对数组中的每一个元素做一次处理 // 计算字符串的长度 let stringArray = ["Objective-C", "Swift", "HTML"...

kyl282889543的博客 3360

Python OpenCV基于颜色通道分离法去除图片中的红色印章

最近一段时间的工作都是研究如何去除图片中的红色印章,在网上查找了大量的大佬写过的方法,发现大多数是采取颜色通道分离法来做,并且效果还不错。站在前人的肩膀上,我又做了些许调整,谈不上是改进,但是能应对更对的情况总还是好的,特此记录。 拿发票做例子,印章相较于其它部分最大的不同就是印章是红色的,而其它部分不是(这是一句废话)。 那么第一步当然就是将红色分离出来,这一步可以采用Python第三方库OpenCV里的 cv2.split()方法,该方法是把RGB图像的三个通道拆分开来,得...

wl_Honest的博客 1万+

FOC实战笔记:RC吸收电路的设计考量与参数调优

本文深入探讨了FOC驱动器中RC吸收电路的设计与调优。针对MOS管开关过程中的电压尖峰问题,详细阐述了RC电路的钳位与能量吸收原理,并提供了从参数计算、实验调试到布局布线的完整实战指南,旨在帮助工程师有效提升系统可靠性与稳定性。

weixin_29219539的博客 273

Swift开发基础08-高阶函数

合集 - Swift(9)1.Swift开发基础07-内存布局07-162.Swift开发基础01-语法2019-06-213.Swift开发基础02-流程控制2019-06-214.Swift开发基础06-闭包07-165.Swift开发基础05-可选项03-016.Swift开发基础04-枚举2019-06-247.Swift开发基础03-函数2019-06-218.SwiftUI01-基本使...

weixin_40685935的博客 705

西电微机系统课程设计步进电机开环控制系统

** 微机系统与应用课程设计 课题二 步进电机开环控制系统设计** 一、程设计目的 掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力。 加深对 A/D 和并行接口芯片的工作方式和编程方法的理解。 搞懂步进电机的工作原理及控制方式,掌握开环控制系统的设计思路和实现方法。 二、课程设计的内容 手动调节电位器旋钮(0V~5V),通过 ADC0809 模拟输入水库水位 0 米~50...

qq_37015775的博客 4038

iOS_Swift高阶函数

Swift高阶函数理解笔记整理

mikimo的博客 1799

【DAY11】超参数调整专题1

核心优势: 它不是随机选择下一个点,而是根据先前评估的结果建立一个概率模型(通常是高斯过程),预测哪些参数组合可能产生更好的结果,并据此选择下一个评估点。这使得它在寻找最优解方面通常比随机搜索更高效(用更少的迭代次数达到相似或更好的性能),特别是当模型训练(单次评估)非常耗时的时候。实际上,有着非常多的方式可以实现贝叶斯优化,上面的代码比较简洁美观,贝叶斯优化和网格搜索的代码书写风格高度一致。- 需要定义参数的搜索空间,与随机搜索类似,当搜索空间非常大时,它通常比网格搜索和随机搜索更有效。

daomingwu1的博客 747

三相交错并联的boost变换器simulink仿真,电流双闭环控制策略

文章介绍了一种基于Simulink的三通道交错并联双向Buck-Boost变换器的设计与仿真。该变换器采用电压外环和三电流内环的控制策略,并通过120°载波移相技术实现Buck模式与Boost模式之间的平滑切换,有效避免了过压和过流问题。交错并联的拓扑结构不仅减少了电感电流的纹波,还缩小了每相电感的体积,提升了电路的响应速度,适用于储能系统。仿真过程完全离散化,采用离散解析器,主电路与控制部分以不同步长运行,更贴近实际应用。控制与采样环节均为手工搭建,未使用Matlab自带模块,展示了三相交错并联Boost

2510_91195931的博客 1706

swift 中的高阶函数 map、flatMap、filter、reduce

今年夏天接触 Python 的时候,发现 Python 中有高阶函数(Higher-order function)的用法,RN中使用Epic进行异步处理数据时也用到了map、flatMap,其实 swift 中也是可以使用高阶函数( map、flatMap、filter、reduce)的,这种函数式编程也是相比 Objective-C 的一大优点。

任意门 783

三菱FX5U气缸控制功能块(完整ST源代码+示例程序)

如果机器包含100个气缸,我们只需要修改数组的元素数量就可以了,效率非常的高。待续....博途PLC 面向对象系列之“双通气缸功能块“(SCL代码)_plc面向对象-优快云博客文章浏览阅读667次。本文介绍了博途PLC中面向对象编程的应用,重点讲解了双通气缸的功能块设计,包括双通电磁阀功能块、双通气缸的UDT数据类型以及SCL代码实现。同时,对比了双通与单通电磁阀的差异,并讨论了将单通气缸改造为双通气缸的方法,强调了双通气缸在安全性上的优势。

RXXW_Dor的博客 1028

Swift 中的高阶函数和函数嵌套

高阶函数 在Swift中,函数可做为“一等公民”的存在,也就意味着,我们可以和使用int 以及 String 一样,将函数当做 参数、值、类型来使用。 其中,将函数当作一个参数和值来使用可见下: typealias addTwoInts = (Int,Int)->(Int) var funcType = addTwoInts.self ...

a26579424的博客 331

第15章 AI 产品原型设计 —— 让 AI 成为你的产品经理

理解产品需求- 将模糊的想法转化为具体的原型方案生成高质量原型- 输出符合设计规范的 HTML 原型提供设计建议- 基于 UX 最佳实践给出优化建议维护原型文档- 自动更新原型说明和变更记录。

快乐的修补匠的专栏 504

7.19华为OD机试真题 新系统 - 物流仓储多维度成本利润综合查询系统 (Java/Py/C/C++/Js/Go)

7.19华为OD机试真题 新系统 - 物流仓储多维度成本利润综合查询系统 (Java/Py/C/C++/Js/Go)

算法大师! 618

swift高阶函数全排列_Swift中的高阶函数

swift高阶函数全排列As a swift developer, you must know about higher-order functions. It will speed up your software development skills. 作为一名Swift的开发人员,您必须了解高阶函数。 它将加快您的软件开发技能。 A higher-order function is a f...

weixin_26638123的博客 452

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Swift中的高阶函数: Filter, Map, Reduce, flatmap, compactMap(译)

自从我详细了解函数和闭包后,我就想去知道它们的优点和在编程中的使用, 我的理解是高阶函数的使用是基于集合类型的。 根据我的理解,高阶函数就是把另一个函数或者闭包当做参数并且返回值。 首先,我来解释一下。思考下面的代码将会使你对高阶函数的理解更深: // 将函数当做参数传递给另一个函数 func addation(num1: Double, num2: Double) -> Double {...

weixin_33724659的博客 488

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Swift中的高阶函数

map函数:通过执行闭包中定义的操作,返回一个新的集合 使用场景: Int数组->String数组 func map() { let nums = [1,2,3,4] let numToStings = nums.map {"\($0)"} print("\(numToStings)") // 打印结果["1", "2", "3", "4"] } flatMap函数: 使用场景1:flatmap函数用于多维数组 func flatMap() { let arr = [[.

butterflyIsMe__821的博客 336

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

55 swift中的高阶函数

swift中的高阶函数

打怪升级的专栏 124

iOS开发笔记之九十五——Swift中的常见高阶函数及实现

本文将介绍这些函数的原理和用法。map是一种常见的高阶函数,它可以将一个集合中的每个元素映射到另一个集合中,然后返回一个新的集合。filter是一种常见的高阶函数,它可以从一个集合中过滤出符合条件的元素,然后返回一个新的集合。在这个例子中,我们将一个包含三个数组的数组扁平化成一个单一的数组,然后将结果存储在一个新的数组中。在这个例子中,我们将原始的数组中的所有偶数元素过滤出来,然后将结果存储在一个新的数组中。在这个例子中,我们将原始的数组中的每个元素乘以2,然后将结果存储在一个新的数组中。

iOS开发笔记 631

swift中的高阶函数练习

【代码】swift中的高阶函数练习。

qq_63007445的博客 168

令你极度舒适的Swift集合类高阶函数

在Swift的集合类型中,有许多十分便捷的函数。相比于Objective-C,这些高阶函数会引起你的极度舒适。因为在Swift的许多函数中引入了闭包元素,这就直接造就了它的灵活性,简直就是极致的便捷。

DCSnail-蜗牛 2653

c语言高阶函数,不学点高阶函数,如何愉快的装逼!

如果你开始接触函数式编程,你一定听说过高阶函数。在维基百科它的中文解释是这样的:在数学和计算机科学中,高阶函数是至少满足下列一个条件的函数:接受一个或多个函数作为输入输出一个函数看起它就是ObjC语言中入参或者返回值为block的block或者函数,在Swift语言中即为入参或者返回值为函数的函数。那它们在实际的开发过程中究竟起着什么样的作用呢?我们将从入参、返回值和综合使用三部分来看这个问题:函...

weixin_42513512的博客 555
上一篇: Swift 闭包
下一篇: Swift 中枚举的基本用法
same_life
博客等级 码龄7年 25粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值