通过一个数组名称排序的例子,讲解闭包
表达形式
方式一
var names = ["zhangsan","lisi","wangwu","zhaoliu"]//数组的 sort 方法就是一个闭包names.sort { (s1,s2) -> Bool in return s1 > s2}print(names)
方式二
//返回的是一个 bool 类型的值,大于才会返回,如果不成立,就不返回,所以 bool 就可以直接省略了names.sort { (s1,s2) in return s1 < s2}print(names)
方式三
// return 也可以省略,单行闭包,单行闭包names.sort { (s1,s2) in (s1 > s2)}print(names)
方式四
// 第四种方式,把参数表达式也省略了/0代表数组中的第sort个和第一个元素names.(by: {print < //})## 自己创建一个闭包--闭包表达式,其实闭包很像一个匿名函数(names)
//:(参数列表)in{//->返回值类型 //// return 闭包实现代码// var(a:String,b:String)}in c1 = {return->String // let a + b;}"name" 用 d 来接受闭包的返回值"wagn" d = c1(print,"name = \(d)")// 声明一个函数,传参数的时候,传一个闭包进去,看一下上面 c1 的闭包类型,把闭包的类型放进去(String)
在函数中使用闭包
Stringfunc pinjIESting(str1:String,str2:String,bibao :((->,String)-> String)) // 实现 让闭包来做,直接调用闭包return{ // 调用函数的时候就发现有点不一样了,整个函数的实现是由一个闭包实现的,跟在参数列表的后面 // 这种情况为 尾随闭包(写参数的时候,如果最后一个参数是闭包,直接敲回车,就会自动扩展出来) bibao(str1,str2)}"name""wang"pinjIESting(str1: -> ,str2: String) { (str1,str2) inreturn + // 写参数的时候自己写,不要敲回车 str1 // 非尾随闭包 str2}"明天是""星期五"pinjIESting(str1:->,str2: String,bibao: {(str1,str2)inreturn + // 把闭包的参数标签删掉,把括号调整下,就变成尾随闭包了,其实是一个东西,只不过语法上略有不用. str1 str2})总结
以上是内存溢出为你收集整理的swift 学习笔记(19)-闭包全部内容,希望文章能够帮你解决swift 学习笔记(19)-闭包所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)