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 |
Swift - 闭包的介绍及用法(以数组排序为例)的更多相关文章
- Swift --闭包表达式与闭包(汇编分析)
在Swift中,可以通过func定义一个函数,也可以通过闭包表达式定义一个函数! 一.闭包表达式 概念 闭包表达式与定义函数的语法相对比,有区别如下: 去除了func 去除函数名 返回值类型添加了关键 ...
- Swift闭包概念与常见使用场景总结
·Swift 闭包 闭包(Closures)是自包含的功能代码块,可以在代码中使用或者用来作为参数传值. Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些 ...
- swift1.2语言函数和闭包函数介绍
swift1.2语言函数和闭包函数介绍 在编程中,随着处理问题的越来越复杂,代码量飞速增加.其中,大量的代码往往相互重复或者近似重复.如果不采有效方式加以解决,代码将很难维护. swift1.2语言函 ...
- iOS开发Swift篇—简单介绍
iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...
- oc-12-NSString 类简单介绍及用法
// 11-[掌握]NSString 类简单介绍及用法 #import <Foundation/Foundation.h> int main(int argc, const char * ...
- iOS开发——Swift篇&Swift关键字详细介绍
Swift关键字详细介绍 每一种语言都有相应的关键词,每个关键词都有他独特的作用,来看看swfit中的关键词: 关键词: 用来声明的: “ class, deinit, enum, extension ...
- WorkFlow介绍及用法
WorkFlow介绍及用法 说起workflow大家肯定都不陌生,这里简单介绍一下salesforce中什么情况下使用workflow. 当你分配许多任务,定期发送电子邮件,记录修改时,可以通过自动配 ...
- Spring BeanFactory与FactoryBean的区别及其各自的详细介绍于用法
Spring BeanFactory与FactoryBean的区别及其各自的详细介绍于用法 1. BeanFactory BeanFactory,以Factory结尾,表示它是一个工厂类(接口),用于 ...
- 学习swift从青铜到王者之swift闭包06
语法表达式 一般形式:{ (parameters) -> returnType in statements } 这里的参数(parameters),可以是in-out(输入输出参数),但不能设定 ...
随机推荐
- myeclipse部署时An internal error occurred 错误的几种情况
myecplise上将工程部署到应用下时,经常出现 An internal error occurred during: "Add Deployment". java.lang.N ...
- kinect for windows - DepthBasics-D2D详解之二
通过上篇文章,我们了解了在视频图像从kinect开发包传输到应用程序之前的一系列初始化工作,那么这篇文章主要来叙述,如何将一帧图像数据获取到,并显示出来的. 更新窗口是在Run函数消息处理中,当Kin ...
- Java中static、final用法
一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引 ...
- 企业级IM应该帮助员工提高绩效,避免无关的信息干扰
很多上班族一定熟悉如下的场景: 您早上上班一打开QQ,就弹出一个新闻集成窗口,随便点开看看吧,这一点不要紧,您就被一个又一个的链接带着逛下去了.等回过神来要工作的时候,发现已经在这些八卦新闻上浪费了一 ...
- Apple Swift 中文教程 高速參考 基本的语法
总的来说.语法有java的味道,也有python的味道,还有swift自己的味道. 有些语法还是挺不伦不类的,不太好理解,即使你有几年的java或python经验,也不见得有些语法你能非常轻松的看明确 ...
- Android Texting(2)Testing Fundamentals 测试基础篇
Testing Fundamentals The Android testing framework, an integral part of the development environment, ...
- javascript实现贪吃蛇
<html> <head> <style> body { background:#444; } .rect { border:1px solid #94F; wid ...
- pkg_utility
创建包名: CREATE OR REPLACE PACKAGE BODY PKG_UTILITY AS --字符串转换到索引表 PROCEDURE STR_TO_LIST(PI_STR IN VARC ...
- Linux下通过rm -f删除大量文件时提示"-bash: /bin/rm: Argument list too long"的解决方法
Linux下通过rm -f删除/var/spool/postfix/maildrop/中大量的小文件时提示: "-bash: /bin/rm: Argument list too long& ...
- 关于PHPExcel类占用内存问题
最近在帮一家公司做后台excel导出功能,使用的工具类是phpexcel,因为这个类功能比较强大.全面. 但是遇到下面一个问题: 当导出数据量达到一定数量级的时候,比如说1000条,服务器出现卡顿.白 ...