Swift - 35 - 使用闭包简化语法
//: Playground - noun: a place where people can play import UIKit // 初始化一个整数数组
var arr = [1, 3, 5, 7, 8, 10, 12, 2, 0, 11, 9]
// 排序, 默认是从小到大排序
arr.sort()
// 通过闭包, 自定义排序方法
arr.sort({(a: Int, b: Int) -> Bool in
return a > b
}) arr = [1, 3, 5, 7, 8, 10, 12, 2, 0, 11, 9]
arr.sort()
// 使用闭包简化语法:由于swift能智能识别到闭包中参数类型和返回值类型
// 在定义闭包的时候, 可以简化成:
arr = arr.sort({(a, b) in return a > b })
arr arr = [1, 3, 5, 7, 8, 10, 12, 2, 0, 11, 9]
// 在闭包中, return是可以省略的(仅限在函数体只有一句话的时候)
// 因此定义闭包的时候, 可以简化成:
arr = arr.sort({(a, b) in a > b})
arr arr = [1, 3, 5, 7, 8, 10, 12, 2, 0, 11, 9]
// 另外, 在闭包中如果有内部参数, 闭包默认也会给它们参数名
// 格式为: $1 $2 分别代表第一个参数和第二个参数, 以此类推
// 跟着, in也就跟着省略了...
// 因此定义闭包的时候, 可以简化成:
arr = arr.sort({return $0 > $1}) // 这里return一样可以省略
arr // 对上一节练习的简化:
var arr2 = ["aa", "b", "bb", "abcd", "aabbcc", "cdefg", "a", "c"]
arr2.sort({
let string1Length = $0.characters.count
let string2Lenght = $1.characters.count if string1Length != string2Lenght { // 长度不相等
return string1Length < string2Lenght
} else { // 长度相等
return $0 < $1
}
}) // 接下来出大招了..
// 针对上面只是简单的比较两个整数的大小
// 可以简化成下面的样子:
arr = [1, 3, 5, 7, 8, 10, 12, 2, 0, 11, 9]
arr = arr.sort(>) // 因为">"本身就是一个函数..
Swift - 35 - 使用闭包简化语法的更多相关文章
- 匹夫细说C#:委托的简化语法,聊聊匿名方法和闭包
0x00 前言 通过上一篇博客<匹夫细说C#:庖丁解牛聊委托,那些编译器藏的和U3D给的>的内容,我们实现了使用委托来构建我们自己的消息系统的过程.但是在日常的开发中,仍然有很多开发者因为 ...
- Swift学习:闭包(Closures)
/* 闭包(Closures)* 闭包是自包含的功能代码块,可以在代码中使用或者用来作为参数传值.* 在Swift中的闭包与C.OC中的blocks和其它编程语言(如Python)中的lambdas类 ...
- Swift中的闭包(Closure) 浅析
转载自:http://www.devtalking.com/articles/closure-expressions-in-swift/ 闭包在Swift中非常有用.通俗的解释就是一个Int类型里存储 ...
- 快看Sample代码,速学Swift语言(1)-语法速览
Swift是苹果推出的一个比较新的语言,它除了借鉴语言如C#.Java等内容外,好像还采用了很多JavaScript脚本里面的一些脚本语法,用起来感觉非常棒,作为一个使用C#多年的技术控,对这种比较超 ...
- Swift中的闭包(Closure)[转]
闭包在Swift中非常有用.通俗的解释就是一个Int类型里存储着一个整数,一个String类型包含着一串字符,同样,闭包是一个包含着函数的类型.有了闭包,你就可以处理很多在一些古老的语言中不能处理的事 ...
- Swift 学习- 08 -- 闭包
// 闭包是自包含的函数代码块, 可以在代码中被传递和使用, swift 中的闭包 与 C语言 和 OC 中的代码块 (blocks) 以及其他一些编程语言中的匿名函数比较类似 // 闭包可以捕获和存 ...
- Swift 中的闭包与 C 和 Objective-C中的 blocks 以及其它一些编程语言中的 lambdas 比較类似。
闭包是功能性自包括模块,能够在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C中的 blocks 以及其它一些编程语言中的 lambdas 比較相似. 闭包能够 捕获 和 ...
- Swift 学习笔记 (闭包)
闭包是可以在你的代码中被传递和饮用的功能性独立模块.Swift中的闭包和C以及Objective-C中的Block很像,和其他语言中的匿名函数也很像. 闭包能捕获和存储定义在其上下文中的任何常量和变量 ...
- swift中的闭包总结
闭包是功能性自包含模块,可以在代码中被传递和使用. Swift 中的闭包与 Objective-C中的 blocks 以及其他一些编程语言中的 lambdas 比较相似. 闭包的基本语法 闭包表达式语 ...
随机推荐
- UVA 1594 Ducci Sequence(两极问题)
Ducci Sequence Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu D ...
- iOS使用VLC
简 注册登录 添加关注 作者 牵线小丑2016.03.18 10:42 写了4836字,被38人关注,获得了43个喜欢 iOS使用VLC 字数946 阅读698 评论1 喜欢14 简介 库 ...
- 构建高可用web站点学习(一)
单个服务器如何处理请求 web服务器最简单的形式就是一个程序,它侦听HTTP请求,在收到一个HTTP请求之后做出回复.当然在接收请求后服务器所做的东西是我们关注的焦点.在下文中也会提及到node是如何 ...
- 如何使用mysql
1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root ...
- hibernate之CRUD操作
CRUD是指在做计算处理时的增加(Create).读取(Retrieve)(重新得到数据).更新(Update)和删除(Delete)几个单词的首字母简写. 下面列举实例来讲解这几个操作: 实体类: ...
- 【HDOJ】5063 Operation the Sequence
#include <cstdio> #include <cstring> #include <cstdlib> #define MAXN 100005 #defin ...
- 国内大学毕业论文LaTeX模板集合
国内大学毕业论文LaTeX模板集合 薛瑞尼的清华大学学位论文LaTeX模板http://sourceforge.net/projects/thuthesis/ 北大论文文档 LaTeX 模板 pkut ...
- 最小费用最大流MCMF zkw费用流
稀疏图慢死了...但是稠密图效果还是很好的 struct MCMF{ struct tedge{int x,y,cap,w,next;}adj[maxm];int ms,fch[maxn]; int ...
- 主席树套树状数组 动态区间第k小
先打上代码以后更新解释 #include <cstdio> #include <iostream> #include <algorithm> #include &l ...
- jstack(Stack Trace for Java)
功能 用于生成虚拟机当前时刻的线程快照(一般称为threaddump或javacore文件).线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间 ...