Swift笔记(五)之函数与闭包(Functions and Closures)
来源:互联网 发布:java分布式爬虫框架 编辑:程序博客网 时间:2024/05/23 21:25
Functions And Closures(函数与闭包)
函数和闭包2个者联系较大就放在一起说了。
方法与go语言中很类型。大致讲下不同之处吧。
1:参数名与参数类型用:隔开
2:如果方法有返回值使用->来表示,多个返回值使用()括起来,与参数列表形式一致,例如 func test(name:String)->(n1:String,n2:String)
3:如果该的参数提供了外部参数名,你在调用该方法给这个参数传递值是需要通过外部参数名来传递.例如:func test(name a:String){} test(name:"shoper").当然也有种简写的办法,这样外部参数名就和参数名一致,func test(#name:String){} test(name:"shoper")
4:swift参数是值传递,如果需要在方法体类改变参数的值,需要使用inout修饰参数,传递参数时使用&取地址符
闭包是一种可以被传递和使用的独立的功能块,swift的闭包类似与C和OC的blocks,类似与其他语言的lambdas表达式.
简单介绍下闭包,通过Array的一个sort方法,我们来看一看这个闭包.
var reversed = sort([1,2,3,4],<span style="color:#ffcc33;">{(n1:Int,n2:Int)->Bool in return n1>n2}</span>)
我们来看看闭包表达式的语法
{ ( parameters ) -> return type in statements}
Swift的闭包表达式简洁,清楚的风格,优化与支持,简洁,无杂乱的语法.主要优化包括:
Inferring parameter and return value types from context •//根据上下文推断参数以及返回值类型Implicit returns from single-expression closures •//单行表达式的闭包的隐式返回Shorthand argument names •//简写参数名Trailing closure syntax •//尾随闭包.
下面就介绍下这4个优点:
- Inferring arameter and return value types from context
例如: var reversed = sort([1,2,3,4],{(n1:Int,n2:Int)->Bool in return n1>n2})我们可以把这个闭包简写为:
var reversed = sort([1,2,3,4],{n1,n2 in return n1>n2}) 我们省去了参数的类型申明以及返回类型申明 - Implicit returns from single-expression closures
例如var reversed = sort([1,2,3,4],{n1,n2 in return n1>n2}) 我们可以把这个闭包表达式简写为
reversed = sort(names, { s1, s2 in s1 > s2 } ) - Shothand Argument Names
例如reversed = sort(names, { s1, s2 in s1 > s2 } )我们可以把这个闭包表达式简写为:
reversed = sort(names, { s1, s2 in s1 > s2 } )
更或者简写为:Operator Functions(运算符函数)
reversed = sort(names, >) - Trailing Closures
例如一个函数func someFunctionThatTakesAClosure(closure:()->()){}这个函数传递一个方法,我们可以调用函数时写成
someFunctionThatTakesAClosure(){}
Note:当然这样优化的前提是,该函数必须是方法的最后一个参数.
0 0
- Swift笔记(五)之函数与闭包(Functions and Closures)
- 第五章 Functions and Closures - 函数和闭包方法
- Swift学习之十四:闭包(Closures)
- Swift学习之十四:闭包(Closures)
- Swift学习之十四:闭包(Closures) .
- Swift学习之十四:闭包(Closures)
- Swift-Closures 闭包
- Swift:闭包(Closures)
- Swift闭包(Closures)
- Swift 闭包Closures
- Swift 闭包(Closures)传值
- Swift 闭包(Closures)
- Swift学习笔记7——闭包(Closures)
- Swift学习 闭包(Closures)
- Swift中的闭包(Closures)
- Swift的学习(Closures(闭包))
- Swift 函数的定义与调用(Defining and Calling Functions)
- swift学习笔记 --- Closures
- MapReduce
- Shell正则表达式 & Grep正则表达式 & shell字符串处理
- 利用mysql "named lock"实现分布式系统的同步
- java.lang中不能被继承的类
- 美能达自动镜头点评
- Swift笔记(五)之函数与闭包(Functions and Closures)
- android的mediaplayer在release后一定需要=null
- 反向代理软件nginx和Kangle及nat123的原理及使用
- OCP 1Z0 052 119
- 【搬家】【.NET】【C#】C# 中处理路径中多余的反斜线
- oracle 11g IO校准
- DMA是什么
- HDOJ 1076 An Easy Task 计算第N个闰年(闰年的计算)
- 基础知识复习一(Jun18)