Swift - 闭包的介绍及用法(以数组排序为例)
闭包(即一些小的匿名代码块),可以像函数一样使用。可以很方便的将闭包传给其他函数,告诉它们应当如何执行某一个任务。
1
2
3
4
5
6
7
8
|
let numbers = [12,25,1,35,27]
let numbersSorted = numbers. sort ({ (n1: Int , n2: Int ) -> Bool in
//进行从小到大的排序
return n2 > n1
})
print (numbersSorted) //[1, 12, 25, 27, 35]
|
2,闭包可以不用指定参数类型,编译器会帮我们推断的
1
2
3
4
5
6
7
8
|
let numbers = [12,25,1,35,27]
let numbersSorted = numbers. sort ({ n1, n2 in
//进行从小到大的排序
return n2 > n1
})
print (numbersSorted) //[1, 12, 25, 27, 35]
|
3,还可以省略参数名,直接根据数字来引用每个参数($0,$1,$2......)
1
2
3
4
5
6
7
8
|
let numbers = [12,25,1,35,27]
let numbersSorted = numbers. sort ({
//进行从小到大的排序
return $1 > $0
})
print (numbersSorted) //[1, 12, 25, 27, 35]
|
4,如果闭包只包含一行代码,可以省略return关键字
1
2
3
4
5
6
7
8
|
let numbers = [12,25,1,35,27]
let numbersSorted = numbers. sort ({
//进行从小到大的排序
$1 > $0
})
print (numbersSorted) //[1, 12, 25, 27, 35]
|
5,如果一个闭包是函数调用的最后一个参数,可以将它放在括号外面。提高可读性。
1
2
3
4
5
6
7
|
let numbers = [12,25,1,35,27]
let numbersSorted = numbers. sort (){
//进行从小到大的排序
$1 > $0
}
print (numbersSorted) //[1, 12, 25, 27, 35]
|
6,这个换行也是可选的,所以代码可再次精简
1
|
let numbersSorted = numbers. sort (){ $1 > $0 }
|
7,闭包也可以存储在变量中,像调用函数一样调用它们
1
2
|
let comparator = {(a: Int , b: Int ) in a < b}
comparator(2,5) //true
|
转载于:https://www.cnblogs.com/Free-Thinker/p/4844227.html
Swift - 闭包的介绍及用法(以数组排序为例)相关推荐
- 闭包的介绍、构成条件、作用及示例代码
1. 闭包的介绍 我们学过了函数,我们知道当函数调用完,函数内定义的变量都销毁了,但是我们有时候需要保存函数内的这个变量,每次在这个变量的基础上完成一些列的操作,比如: 每次在这个变量的基础上和其它数 ...
- swift1.2语言函数和闭包函数介绍
swift1.2语言函数和闭包函数介绍 在编程中,随着处理问题的越来越复杂,代码量飞速增加.其中,大量的代码往往相互重复或者近似重复.如果不采有效方式加以解决,代码将很难维护. swift1.2语言函 ...
- Java 动态代理介绍及用法
Java 动态代理介绍及用法 一,静态代理模式的特点 在之前的文章中 java代理模式 已经介绍里java里的(静态)代理模式 下面是上文静态代理类的例子: public class ProxyBea ...
- swift自行车品牌介绍_品牌101:简介
swift自行车品牌介绍 Sometimes when I'm around designer friends and there's a lull in the conversation one o ...
- Java中BigDecimal类介绍及用法
Java中BigDecimal类介绍及用法 Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高 ...
- chrome介绍与用法
chrome介绍与用法 chrome介绍与用法 1. 认识devTools Elements 面板 console控制面板 Sources 资源面板 chrome介绍与用法 1. 认识devTools ...
- Python闭包基本介绍与作用
目录 1.闭包基本介绍 1.1 外函数的返回值是内函数的引用 1.2 外函数把临时变量绑定给内函数 1.3 闭包中内函数修改外函数局部变量 2.闭包的作用 1.闭包基本介绍 "闭包" ...
- at指令 meid_AT指令介绍及用法,AT 指令集合
AT指令介绍及用法,AT 指令集合 AT指令在当代手机通讯中起着重要的作用,能够通过AT指令控制手机的许多行为,包括拨叫号码.按键控制.传真.GPRS等.西门子M55手机为我提供了很多的AT指令,网络 ...
- C#中File和FileStream的简单介绍和用法
前言 在近期的工作过程中发现自己的基础比较薄弱,所以最近在恶补基础知识.下面就对我所学习的File类和FileStream进行简单的总结. 1.首先先介绍File类和FileStream文件流 1.1 ...
最新文章
- mybatis的一些基础问题
- 擦地机器人修理_不要智障机器人,擦地机器人就选iRobot,干湿两擦用了就知道...
- 关于服务器端控件的attributes属性的奇怪问题
- opencore0.6.3_大杨随笔2020.11.3
- 微信JS-SDK开发:扫一扫接口功能实现
- 出错处理函数abort、exit、atexit、strerror
- 子集生成 --二进制法
- Junit4中Test Suite的用法
- 常用的前端跨域的几种方式
- 【华为云技术分享】“敏捷+ DevOps”先行,效能提升助推企业升级
- 【转】ASP.net MVC自定义错误处理页面的方法
- python语言-Python语言的一些基本常用语句
- Multisim10.0.1汉化时没有stringfiles问题
- 写刀路的一些经验[分享] 铜公加工方法及注意事项
- 理论力学知识要点(五)
- Spring底层原理问题
- 《我是一只小小鸟》读后感
- oracle导出自增设置,教程方法;oracle中如何设置自增主键电脑技巧-琪琪词资源网...
- 近红外 中红外 远红外
- <转载>Presto对接华为HDFS 3.X,Unrecognized Hadoop major version number解决方案
热门文章
- python项目中无法import不同文件的代码
- 西安网络推广教大家如何正确解决处理网站死链
- matlab sol函数,sol=bvp4c(@f,@fsbc,solinit)解决有上下限的ODE函数
- 变频电机转矩频率特性曲线_伟创变频器
- java编程50实例_java编程实例大全及详解谜底(50例).doc
- java jackson json_java – 使用Jackson从JSON获取单个字段
- python实现火车票查询工具_Python 实现一个火车票查询的工具
- jq选中单选框后文本框不可编辑_打开速度最快最强大的PDF免费工具,编辑+阅读功能一体...
- (转载)linux下输入输出重定向和管道符
- 使用GAN进行异常检测——可以进行网络流量的自学习哇,哥哥,人家是半监督,无监督的话,还是要VAE,SAE。...