《从零开始学Swift》学习笔记(Day 23)——尾随闭包

原创文章,欢迎转载。转载请注明:关东升的博客 


闭包表达式可以作为函数的参数传递,如果闭包表达式很长,就会影响程序的可读性。尾随闭包是一个书写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用。

下面我们来看一个示例代码:

func calculate(opr: String, funN:(Int, Int) -> Int) { 




//最后一个参数funN是(Int,Int)-> Int函数类型,funN可以接收闭包表达式




    switch (opr) {




    case "+" :




        print("10 + 5 = \(funN(10,5))")




    default:




        print("10 - 5 = \(funN(10,5))")




    }




} 




calculate("+", funN: {(a: Int, b: Int) -> Int in return a + b })  //调用




calculate("+"){(a: Int, b: Int) -> Int in return a + b } //调用,这种形式就是尾随闭包




calculate("+") { $0 + $1 }  //调用,这种形式就是尾随闭包

       需要注意的是,闭包必须是参数列表的最后一个参数,如果calculate函数采用如下形式定义:


func calculate(funN:(Int, Int) ->Int, opr:String) {


...


}


由于闭包表达式不是最后一个参数,那么调用calculate函数就不能使用尾随闭包写法的。


 


欢迎关注关东升新浪微博@tony_关东升
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
 http://www.zhijieketang.com/files/default/2015/09-28/110238ef41e1688449.png?6.4.1

更多精品iOSCocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
智捷课堂论坛网站:http://51work6.com/forum.php


 



http://www.niftyadmin.cn/n/1036494.html

相关文章

《从零开始学Swift》学习笔记(Day 24)——枚举

原创文章,欢迎转载。转载请注明:关东升的博客 Swift中的枚举可以定义一组常量、提高程序的可读性;还具有面向对象特性。使用enum关键词声明枚举类型,具体定义放在一对大括号内,枚举的语法格式如下:enum 枚…

python实现简单抢红包算法

微信群又发红包了?让我先抢他一个亿。当抢红包我们大呼过瘾时,不如一起来看看隐藏其后的算法。 发出一个固定金额的红包,由若干个人来抢,需要满足哪些规则? 当然是如下了: 1.所有人抢到金额之和等于红包金…

基于朴素贝叶斯的垃圾邮件识别

在网上看到很多用朴素贝叶斯算法来实现垃圾邮件分类的,有直接调用库的,也有自己写的。出于对贝叶斯算法的复习,我也想用贝叶斯算法写写邮件识别,做一个简单的识别系统。 一.开发环境 Python3.6,邮件包(包含…

C/C++无符号整数回绕判断

一.加法 先验条件测试。下面的代码执行加法操作数的一个先验条件测试&#xff0c;以保证没有回绕的可能性。 unsigned int ui1,ui2,sum; /*初始化ui1,ui2*/ if(UINT_MAX-ui1<ui2)//UINT_MAX头文件是<limits.h> { /*处理错误情况*/ } else { sumui1ui2; ] 后验条件…

C语言解决八皇后问题

八皇后问题是这样一个问题&#xff1a;将八个皇后摆在一张8*8的国际象棋棋盘上&#xff0c;使每个皇后都无法吃掉别的皇后&#xff0c;即&#xff1a;每一行&#xff0c;每一列&#xff0c;每一条对角线只有一个皇后&#xff0c;一共有多少种摆法&#xff1f; 算法思想&#x…

Leetcode-1201丑数III

请你帮忙设计一个程序&#xff0c;用来找出第 n 个丑数。 丑数是可以被 a 或 b 或 c 整除的 正整数。 示例 1&#xff1a; 输入&#xff1a;n 3, a 2, b 3, c 5 输出&#xff1a;4 解释&#xff1a;丑数序列为 2, 3, 4, 5, 6, 8, 9, 10... 其中第 3 个是 4。 示例 2&…

连续差相同的数字-Leetcode967

返回所有长度为 N 且满足其每两个连续位上的数字之间的差的绝对值为 K 的非负整数。 请注意&#xff0c;除了数字 0 本身之外&#xff0c;答案中的每个数字都不能有前导零。例如&#xff0c;01 因为有一个前导零&#xff0c;所以是无效的&#xff1b;但 0 是有效的。 你可以按…

Leetcode-1094 拼车

假设你是一位顺风车司机&#xff0c;车上最初有 capacity 个空座位可以用来载客。由于道路的限制&#xff0c;车 只能 向一个方向行驶&#xff08;也就是说&#xff0c;不允许掉头或改变方向&#xff0c;你可以将其想象为一个向量&#xff09;。 这儿有一份行程计划表 trips[]…