原创文章,欢迎转载。转载请注明:关东升的博客
闭包表达式可以作为函数的参数传递,如果闭包表达式很长,就会影响程序的可读性。尾随闭包是一个书写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用。
下面我们来看一个示例代码:
写道
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 } //调用,这种形式就是尾随闭包
//最后一个参数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函数就不能使用尾随闭包写法的。
相关推荐
JavaScript闭包 JavaScript闭包 JavaScript闭包 JavaScript闭包
swift5.3中规定了多重尾随闭包必须填写参数名,例子中用rxswift 分别调用带默认参数的和不带默认参数的 多重尾随闭包,注释里有讲解教程
iOS开发之swift闭包学习
Swift 中的闭包和 Objective-C 中的Block讲解
Block是OC中的闭包,他和swift中的闭包有什么区别呢?下面这篇文章就来给大家介绍关于Objective-C中的block与Swift中的尾随闭包使用的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
Swift之闭包ClosureDemo
Swift语言教程基础语法函数和闭包.docx
(Swift)闭包作为属性
函数和闭包
本Demo利用Swift语言采用Closure闭包实现两个视图控制器的反向传值,和OC中的Blocks类似,但有些不同。
swift闭包/面向对象/构造函数/可选项/数组/字典/循环语句/代理/闭包/通知/等基础知识/只用于学习/有什么不对的地方请发我邮箱/swift4.0
Swift视频教程 基础语法系列 闭包单行间接返回
很多初次接触到python的小伙伴可能并不理解闭包是什么,为什么有闭包,闭包有什么用,那么今天博主就从这三点来为大家讲解一下python的闭包 一、闭包是什么 官方定义: 在计算机科学中,闭包(英语:Closure),又称词法...
swift UITableView 闭包 block! 使用代码创建UITableView 自定义Cell 使用闭包(block) 回调
Swift视频教程 基础语法系列 闭包sorted函数
Swift5.2 Block(闭包)
视频教程
javascript笔记之匿名函数和闭包.docx
js闭包写法学习demo
python闭包深入(csdn)————程序