闭包(Closures)是自包含的功能代码块(就像是使用轻量级语法实现的函数),可以在代码中使用或者用来作为参数传值。
Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的 匿名函数比较相似。
全局函数和嵌套函数其实就是特殊的闭包。

语法:

{(parameters) -> return type instatements
}//实例:
let divide = {(val1: Int, val2: Int) -> Int in return val1 / val2
}
let result = divide(200, 20)
print (result)

闭包表达式
闭包表达式是一种利用简洁语法构建内联闭包的方式。 闭包表达式提供了一些语法优化,使得撰写闭包变得简单明了。
用Swift 标准库提供了名为 sorted(by:) 的方法,这种方法会据您提供的用于排序的闭包函数将已知类型数组中的值进行排序。
我们在这里用一个闭包表达式 来定义Java中的比较器。

let names = ["AT", "AE", "D", "S", "BE"]// 使用普通函数(或内嵌函数)提供排序功能,闭包函数类型需为(String, String) -> Bool。
func backwards(s1: String, s2: String) -> Bool {return s1 > s2
}
var reversed = names.sorted(by: backwards)print(reversed)
//print result: ["S", "D", "BE", "AT", "AE"]//甚至可以更简单
let names = ["AT", "AE", "D", "S", "BE"]var reversed = names.sorted( by: { $0 > $1 } ) //$0和$1表示闭包中第一个和第二个String类型的参数。
print(reversed)//甚至可以更简单
let names = ["AT", "AE", "D", "S", "BE"]var reversed = names.sorted(by: >) //Swift 的String类型定义了关于大于号 (>) 的字符串实现,其作为一个函数接受两个String类型的参数并返回Bool类型的值。 而这正好与sort(_:)方法的第二个参数需要的函数类型相符合。 因此,您可以简单地传递一个大于号,Swift可以自动推断出您想使用大于号的字符串函数实现:
print(reversed)

尾随闭包是什么?

什么是swift闭包?相关推荐

  1. Swift 闭包表达式

    闭包是功能性自包含模块,可以在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C 中的 blocks 以及其他一些编程语言中的 lambdas 比较相似. 闭包的形式主要有三 ...

  2. swift闭包 notes http://www.gittielabs.com

    Swift Closures Swift Closures - Everyday Gems Part 1 of 2 Today's Swift topic is on Closures. Headin ...

  3. swift闭包的另一种用法

    这不是教程. 当你碰到函数参数需要传递一个闭包(closure)时,一般是可以直接这么传递的(假定无返回): // 教程一般教你在参数位置传递closure: someMethod(arg1, arg ...

  4. Swift 闭包(block)详解

    1.闭包 Swift对闭包进行了简化: 利用上下文推断参数和返回值类型 隐式返回单表达式闭包,即单表达式闭包可以省略return关键字 参数名称缩写 尾随(Trailing)闭包语法 先来看一个排序的 ...

  5. swif(六)swift闭包

    // // main.swift // LessonSwiftSix // // Created by keyan on 15/9/13. // Copyright (c) 2015年 keyan. ...

  6. Swift 闭包的使用(尾随闭包)

    -闭包的使用 提问:block 的应用场景是什么? 1. `网络(异步的)代码添加到队列,队列调度完成` -> 回调 无法通过返回值通知调用方 2. 回调的数值,是通过 block 的 `参数进 ...

  7. swift_040(Swift闭包声明与用途)

    一.闭包的概念 闭包其实是oc里面的block,语法格式不一样,但作用是一样的.主要是用于callBack(异步回调)或者两个类之间的通信.它的本质一个函数,一个可执行的代码块,只是这个函数是没有名字 ...

  8. Swift - 闭包的介绍及用法(以数组排序为例)

    闭包(即一些小的匿名代码块),可以像函数一样使用.可以很方便的将闭包传给其他函数,告诉它们应当如何执行某一个任务. 1,使用sort方法和闭包进行数组排序 sort方法返回一个数组的有序版本.(sor ...

  9. swift 闭包的使用

    2019独角兽企业重金招聘Python工程师标准>>> 使用: // 注意:在闭包中如果使用当前对象的属性或者调用方法,也需要加self// 两个地方需要使用self : 1> ...

最新文章

  1. glusterfs初步实践一(类似NFS)
  2. Activiti工作流之网关
  3. 51. N-Queens
  4. gorm preload 搜索_文件太多忘记了文件放在什么地方?那你可以试试这款文件搜索工具...
  5. 听说你在学习算法?清华教授为你准备了一份独家秘籍!
  6. BNUOJ 1207 滑雪
  7. php抽象类的构造函数,抽象类的构造函数
  8. api 原生hbase_hbase之java api实战一
  9. Python——生成一个大文件ips.txt,要求1200行 ,每行随机为172.25.254.0/24段的ip(京东二面笔试题)
  10. Find a way BFS
  11. tomcat启动时,没有启动你所配置的项目(原因可能是Eclipse 中的工程builed 失败造成),如何解决~
  12. JSK-133 冒泡排序【排序】
  13. RK3328硬件解码+SPR5801边缘加速
  14. SpringBoot整合redis,启动提示错误信息: An exception was thrown by org.redisson.misc.RedissonPromise$$Lambda$682
  15. 华为摄像头采集自动聚焦崩溃
  16. Endnote20加载入wps——当COM加载项找不到插件时
  17. Navicat导入sql文件报错
  18. 12.5--卡片式布局
  19. 电商秒杀系统相关实现
  20. 将linux改为windows7,linux操作系统如何改为windows 7的呀????!!!

热门文章

  1. Excel也可以查询快递信息
  2. 启动vfloppy.sys错误
  3. Arduino蓝牙模块实验(HC-42)
  4. linux 命令中英文对照,收集
  5. js接收excel文件流并解析下载文件
  6. Python从入门到转行
  7. Linux常用命令(本篇包括,Linux目录结构介绍、Linux Shell介绍、9个常见命令介绍、文件的概念、文件的操作(20个)、目录的操作、文件和目录的权限、文件压缩及解压缩)
  8. 开发一个微信小程序,对酒店经营管理有哪些好处?
  9. 微软管理控制台(MMC)
  10. windows下的python安装scrapy