完整型:

rects.sort({ (first: Rectangle, second: Rectangle) -> Bool in return first.width * first.length <= second.width * second.length
})

闭包表达式的几种简化缩写形式:

  • 自动类型判断:省略参数类型和返回值类型
rects.sort({ first, second inreturn first.width * first.length <= second.width * second.length
})
  • 单表达式闭包可以省去return关键词(单表达式的意思是就是return语句只有一句话)——比较普遍
rects.sort({ first, second infirst.width * first.length <= second.width * second.length
})
  • 使用参数缩略形式0,0, 1…省略参数声明和in($0表示第一个参数,¥1表示第二个参数)——比较普遍
rects.sort({ $0.width * $0.length <= $1.width * $1.length})
  • 将操作符函数自动推导为函数类型——用的不多
rects.sort( <= )
  • 尾随闭包:当闭包表达式为函数最后一个参数,可将其写在括号后(为了代码的干净整洁)——比较常见
rects.sort{first, second infirst.width * first.length <= second.width * second.length
}
  • 自动闭包:不接受任何参数,直接返回表达式的值。允许延迟计算。

    • 允许延迟计算的意思是本来filter是会立即计算的,这样可以延迟计算,到之后才去执行filter()
var cities = ["Beijing", "Shanghai", "New York"]
let filter = { cities.removeLast() } // filter的类型为无参数返回值为string的闭包的实例对象
filter() // 这样表示执行了这个函数

【note】Swift之闭包表达式的几种简化缩写形式相关推荐

  1. Swift 闭包表达式

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

  2. Swift学习笔记 闭包表达式

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

  3. swift_016(Swift 的闭包)

    //***********swift学习之16--闭包--*************************** /*   闭包(Closures) * 闭包是自包含的功能代码块,可以在代码中使用或者 ...

  4. 1.22 Lambda表达式的3种简写方式

    使用 Lambda 表达式是为了简化程序代码,Lambda 表达式本身也提供了多种简化形式,这些简化形式虽然简化了代码,但客观上使得代码可读性变差.本节介绍 Lambda 表达式的几种简化形式. 省略 ...

  5. Swift学习(八):闭包(闭包表达式,尾随闭包,闭包的定义,自动闭包)

    闭包表达式(Closure Expression) 可以通过func定义一个函数,也可以通过闭包表达式定义一个函数 func函数 闭包定义函数 闭包表达式调用可以直接省略参数名 闭包定义函数也可以写为 ...

  6. swift 引用其他类_浅谈swift中闭包修饰符 weak?unowned? 或什么都不用

    浅谈swift中闭包修饰符 weak?unowned? 或什么都不用 平常的开发中,clourse是我们iOSr绕不过去的坎儿. 苹果本身也很重视闭包,像之前的一些老的target-action类型的 ...

  7. python函数拟合不规则曲线_python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案...

    第一种是进行多项式拟合,数学上可以证明,任意函数都可以表示为多项式形式.具体示例如下. ###拟合年龄 import numpy as np import matplotlib.pyplot as p ...

  8. lambda表达式的3种写法

    lambda表达式: 简单来说,可以看成是对匿名内部类的简写.使用Lambda表达式时,接口必须是函数式接口 基本语法: <函数式接口>  <变量名> = (参数1,参数2.. ...

  9. 从λ演算到函数式编程聊闭包(1):闭包概念在Java/PHP/JS中形式

    什么是闭包 如果让谷哥找一下"闭包"这个词,会发现网上关于闭包的文章已经不计其数 维基百科上对闭包的解释就很经典: 在计算机科学中,闭包(Closure)是词法闭包(Lexical ...

最新文章

  1. CVPR2021|Anchor-free新玩法,一个head统一目标检测,实例分割,姿态估计三种任务...
  2. cast函数 oracle 日期_从Oracle到PG 该做的改造工作一个都不能少!
  3. 用来做 favicon 的站点
  4. 【HTML+CSS网页设计与布局 从入门到精通】第5章-表格
  5. python图像对比_Python多种图像处理库的比较与比较
  6. FPGA你必须知道的那些事儿
  7. 计算机图形学跳一跳_微信小游戏“跳一跳”对内部审计师的启示
  8. C++ 偏微分数值计算库_ESYSim仿真器介绍之一 C++库介绍
  9. flask前端优化:css/js/html压缩
  10. 计算机组成原理(2021最新版)面试知识点集锦
  11. Oracle归档日志路径的三个参数DB_RECOVERY_FILE_DEST和LOG_ARCHIVE_DEST和LOG_ARCHIVE_DEST_n区别
  12. 终极讲师介绍:集齐 27 位大神召唤亚洲首届 Rust 开发者大会!
  13. 成长篇-靡有不凡鲜克有终-02
  14. 产品经理--用户研究
  15. 多元线性回归公式推导及R语言实现
  16. matlab自动写word报告,matlab自动写入word
  17. AspNet2.0页面生命周期的各个事件细节
  18. 电磁波谱和光纤通信使用频段
  19. 【板栗糖GIS】——如何下载哔哩哔哩的视频CC字幕为不带时间节点的纯文字
  20. java毕业设计高校后勤保修系统源码+系统+数据库+lw文档+调试运行

热门文章

  1. ubuntu-12.04.2忘记管理员密码(图解)
  2. 为Editplus安装smali代码语法高亮插件
  3. Android----Allapps加载流程详解【AndroidICS4.0——Launcher系列五】
  4. 【杂文】从实习到校招到工作
  5. Just a test
  6. CSS z-index 属性的使用方法和层级树的概念
  7. .net Asp AdRotator(广告控件)
  8. 局部临时表 全局临时表 表变量
  9. Mozilla Firefox 7.0 发布
  10. 因情制宜,建立“适当”的索引