Swift 烧脑体操(三) - 高阶函数
前言
\\
Swift 其实比 Objective-C 复杂很多,相对于出生于上世纪 80 年代的 Objective-C 来说,Swift 融入了大量新特性。这也使得我们学习掌握这门语言变得相对来说更加困难。不过一切都是值得的,Swift 相比 Objective-C,写出来的程序更安全、更简洁,最终能够提高我们的工作效率和质量。
\\
Swift 相关的学习资料已经很多,我想从另外一个角度来介绍它的一些特性,我把这个角度叫做「烧脑体操」。什么意思呢?就是我们专门挑一些比较费脑子的语言细节来学习。通过「烧脑」地思考,来达到对 Swift 语言的更加深入的理解。
\\
这是本体操的第三节,练习前请做好准备运动,保持头脑清醒。
\\
准备运动:基础知识
\\
在上一节里面,我们其实已经涉及到了高阶函数了。在 Wikipedia 中,是这么定义高阶函数(higher-order function)的,如果一个函数:
\\
- 接受一个或多个函数当作参数\\t
- 把一个函数当作返回值\
那么这个函数就被称作高阶函数。下面是一个简单的排序的例子,在这个例子中,传进去的参数就是一个函数:
\\
\let numbers = [1, 4, 2, 3]\let res = numbers.sort {\ $0 \u0026lt; $1\}\
\\
Trailing Closure Syntax
\\
上面的代码看着不像是函数作为参数存在,这是因为 Swift 的 Trailing Closure 特性。Swift 允许当函数的最后一个参数是闭包的时候,以紧跟 { }
的形式,将最后一个闭包的内容附加在函数后面。
\\
所以,以下两行代码是等价的:
\\
\// 正常写法,函数是作为 sort 的参数\arr.sort({ $0 \u0026lt; $1 })\\// Trailing Closure 写法,更简洁明了\arr.sort { $0 \u0026lt; $1 } \
\\
常见用法示例
\\
高阶函数在 Swift 语言中有大量的使用场景,我们先来看一看常见的用法:
\\
遍历
\\
我们可以用 map
方法来对数组元素进行某种规则的转换,例如:
\\
\let arr = [1, 2, 4]\// arr = [1, 2, 4]\\let brr = arr.map {\ \"No.\" + String($0)\}\// brr = [\"No.1\
Swift 烧脑体操(三) - 高阶函数相关推荐
- Swift 烧脑体操(二) - 函数的参数
前言 \\ Swift 其实比 Objective-C 复杂很多,相对于出生于上世纪 80 年代的 Objective-C 来说,Swift 融入了大量新特性.这也使得我们学习掌握这门语言变得相对来说 ...
- 廖雪峰讲python高阶函数求导公式_廖雪峰的学习笔记(三)高阶函数
1.所谓的"高阶函数":把函数对象作为参数的函数. 2.示例: map()函数: 我们先看map.map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数 ...
- Python 基础之匿名函数 迭代器和高阶函数
一.匿名函数 lambda表达式 用一句话来表达只有返回值的函数,叫匿名函数特点:简洁方便语法:lambda 参数: 返回值 1.不带有参数的lambda表达式 def func(): ret ...
- Python高阶函数原理分析及其应用
三 高阶函数, 闭包和装饰器 所谓高阶函数就是把函数做为参数传入的一类函数. 另外, 返回函数的函数也属于高阶函数. 3.1 函数做为参数传入另外一个函数 3.1.1 高阶函数引入 Python中函数 ...
- Swift的高阶函数
Swift的高阶函数 swift常用高阶函数 1. map 2. flatMap 3. filter 4. reduce swift常用高阶函数 swift中比较常用的高阶函数有:map.flatMa ...
- [译]Effective Kotlin系列之探索高阶函数中inline修饰符(三)
简述: 不知道是否有小伙伴还记得我们之前的Effective Kotlin翻译系列,之前一直忙于赶时髦研究Kotlin 1.3中的新特性.把此系列耽搁了,赶完时髦了还是得踏实探究本质和基础,从今天开始 ...
- JavaScript 面向对象编程(三) —— 函数进阶 / 严格模式 / 高阶函数 / 闭包 / 浅拷贝和深拷贝
本篇为 JavaScript 进阶 ES6 系列笔记第三篇,将陆续更新后续内容.参考:JavaScript 进阶面向对象 ES6 :ECMAScript 6 入门 系列笔记: JavaScript 面 ...
- Kotlin学习笔记 第三章 函数 高阶函数 lambda表达式 内联函数
参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...
- python高阶函数(三分钟读懂)
python高阶函数(三分钟读懂) 函数式编程 Python中,函数是一等对象 一等对象:具有特点 ① 对象是在运行时创建的 ② 能赋值给变量或作为数据结构中的元素 ③ 能作为参数传递 ④ 能作为返回 ...
最新文章
- 比较分析与数组相关的sizeof和strlen
- .NET重构—单元测试重构
- caffe中mnist数据集的运行
- boost::gursoy_atun_layout用法的测试程序
- 【Gunicorn】gunicorn配置文件详解
- Npgsql 6.0.2 发布,赶紧升级!!!
- Tesseract Ocr文字识别
- SVN Cleanup失败解决方法
- Linux 实例如何开启 MySQL 慢查询功能
- xu2w显示屏软件下载_LED显示屏控制软件(LED BEST)
- android连接airprint打印机,苹果让无线打印更加便捷,安卓已羡慕
- codeforces——962
- python尼姆游戏_python实现聪明的尼姆游戏(人机对战)
- 简体和繁体之间的转换
- css3实现div hover阴影效果
- R语言使用cph函数和rcs函数构建限制性立方样条cox回归模型、使用ggcoxzph函数可视化进行Schoenfeld残差图检验模型是否满足等比例风险
- 广州优漫动游公司:高级UI/UE交互设计就业班学什么?
- BP神经网络隐层节点的个数设置方法
- Seurat的normalization和scaling
- java特种兵_《Java特种兵(上册)》PDF 下载