今天主要是给大家分享的是 swift中闭包的用法,我个人觉得闭包就是函数的简写方法,如果您函数不是很熟悉请查阅 swift入门篇-函数

1:函数类型

函数类型
var 变量 :(类型)->返回值 =函数名 说明:
:函数名 表示函数地址
:(类型)->返回值 表示函数类型
:函数类型必须和函数名的参数和返回值一致

例子

/*

1:func 是函数关键字
2:Say是函数名,表示函数的地址
3:Say函数 参数是整形 返回值为布尔类型
*/

 func Say(num:Int)->Bool{ 

return num > 10
}
var By:(Int)->Bool = Say /*
1:Say是函数名的地址,并且函数类型,参数为整形,返回值布尔类型
2:(Int)->Bool 表示 函数类型,参数为整形 ,返回值为布尔类型。
即:By是函数变量(参数为整形,返回值为布尔类型) 指向函数名(Say)
*/ var b = By() //by(12)直接调用函数
println(b) 运行结果
true

2:闭包格式

 格式 :
{
(参数:类型) ->返回类型 in 执行方法 return 返回类型
} 说明:
1;闭包主要指向函数类型
2:闭包的参数必须和函数类型的参数和返回值一致

例子

/*

函数Getlist说明
参数:
1:第一个参数 整形集合变量
2:第二参数,函数类型变量 参数为整形返回值布尔类型
返回值
整形集合 */ func GetList(arr:Int[] , pre:(Int)->Bool) ->Int[]{ //定义一个空的可变整形集合
var tempArr = Int[]() for temp in arr { if pre(temp){
tempArr += temp;
}
} return tempArr;
} /*
调用Getlist 说明
第一个参数 整形数组 [1,2,3,4]
第二个参数 闭包 来指向给 函数类型 。
{(s) in return s>2} 闭包类型说明,参数为整形,返回值为布尔类型
*/
let arr=GetList([,,,],{(s:Int) in return s>})
println(arr) 运行结果
[, ]

3:闭包简写方法

  1;第一种简写 :省略 参数类型和括号

  2:第二种简写 : 省略 参数类型和括号,return关键字

  3:第三种简写 : 参数名称缩写 (用$0代表第一个参数,$1代表第二个参数)

/*

函数Getlist说明
参数:
1:第一个参数 整形集合变量
2:第二参数,函数类型变量 参数为整形返回值布尔类型
返回值
整形集合 */ func GetList(arr:Int[] , pre:(Int)->Bool) ->Int[]{ //定义一个空的可变整形集合
var tempArr = Int[]() for temp in arr { if pre(temp){
tempArr += temp;
}
} return tempArr;
} //第一种简写 :省略 参数类型和括号
var Arr = GetList([,,,],{s in return s>}) //第二种简写 : 省略 参数类型和括号,return关键字
Arr = GetList([,,,], {s in s>}) //第三种简写 : 参数名称缩写 Arr = GetList([,,,],{$>}) //其中$0表示第一个参数 println(Arr) 以上3种用法的运行结果为 [, ]

4:尾随闭包

官方定义:尾随闭包是一个书写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用

/*

1: 函数 Fuction 的参数 函数类型
2: 参数为函数类型,函数类型,参数为空,返回值为空 */ func Fuction(closure: () -> ()) {
println("无参数,无返回值的韩式类型")
} //-----------------第一种调用方法------------
/*
调用函数Fuction
1:参数为闭包
2:闭包的参数为空,返回值为空 */
Fuction({ }) //-----------------第二种调用方法------------ Fuction() { } 以上2种调用方法的运行结果都是 无参数,无返回值的韩式类型

后面的文章,我回陆续把我学习到swift语言的知识写出来形成一个系列。由于是新语言,难免有不足,欢迎给我提出意见。也可以加我QQ 1436051108一起讨论,如果您有什么问题,也可以直接在QQ留言发给我,我看到之后第一时间回复您

最后总结一下。送上一直思维导图,作为文章的结束

Swift入门篇-闭包和函数的更多相关文章

  1. Swift入门篇-Hello World

    提示:如果您使用手机和平板电脑看到这篇文章,您请在WIFI的环境下阅读,里面有很多图片, 会浪费很多流量. 博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 最近这2天主要 ...

  2. Swift入门篇-循环语句

    今天早上一起来所有新闻都是报道荷兰5-1战胜西班牙,我一看没有搞错吧,顿时想都如果中国队vs荷兰队也不至于会输的怎么惨吧,难道是荷兰队开挂了,于是我看了一下昨天比赛的视频直播,还真是新闻报道的那样,顿 ...

  3. Swift入门篇-字符串和字符

    今天主要是介绍一下字符串的用法 ,字符串的语法和object-c语法不太一样,但是思想是一样,就是写法不太一样.如果您对.net和java语法比较熟悉的话,那您几乎没有深压力.如果您对swift 基本 ...

  4. Swift入门篇-基本类型(2)

    现在我也在学习Swift语言,常常去逛很多苹果社区和论坛,看到了圈子很多奇怪的现象,发现很多人都赶忙去翻译 Swift书籍 和 发布Swift的视频 .他们这种对新知识的探索精神我本人是很佩服的.但是 ...

  5. Python入门篇-高阶函数

    Python入门篇-高阶函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.高级函数  1>.First Class Object 函数在Python中是一等公民 函数也 ...

  6. Swift入门篇-swift简介

    潜水博客园很多年,闲来无事,聊一下自己的经历,语文不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 在前期 ios入门篇 -hello Word(1) 文章中介绍我这半年准备写一些ios ...

  7. swift入门篇-函数

    今天给大家介绍 swift函数,swift函数和c#,js的写法大致一直,但是与object-c写法有很大不同点.废话不多说,直接开始了. 1:函数  --常量参数 func 函数名( 参数变量:类型 ...

  8. Swift入门篇-集合

    一:数组 一:可变数组 定义:数组使用有序列表存储相同类型的多重数据. 格式: 第一种格式 var 变量: 类型[] = [变量值,变量值,...] 第二种格式 var 变量 =[变量值,变量值,.. ...

  9. Swift入门篇-基本类型(3)

    一:元组 格式 变量或常量关键字 元组变量 = ( 变量,变量, …) 说明: : 元组变量还是一个变量,只不过表现方式和其他变量不一样 :()括号里面可以放入N个变量组成 例子: import Fo ...

随机推荐

  1. Mac上的抓包工具Charles

    http://blog.csdn.net/jiangwei0910410003/article/details/41620363 $********************************** ...

  2. 学习python之练习(三)

    python排序算法 1.冒泡排序: import math def BubbleSort(list): lengthOfList = len(list) for i in range(0,lengt ...

  3. MySQL主从复制、半同步复制和主主复制

    同步,异步,半同步复制的比较: 同步复制:Master提交事务,直到事务在所有的Slave都已提交,此时才会返回客户端,事务执行完毕.缺点:完成一个事务可能会有很大的延迟. 异步复制:当Slave准备 ...

  4. 基于VC的声音文件操作(二)

    (二)VC的声音操作 操作声音文件,也就是将WAVE文件打开获取其中的声音数据,根据所需要的声音数据处理算法,进行相应的数学运算,然后将结果重新存储与WAVE格式的文件中去:可以使用CFILE类来实现 ...

  5. log-malloc2 0.2.4 发布

    log-malloc2 0.2.4 发布了,该版本修复了日志格式输出的 bug. og-malloc2 是一个 malloc 日志预加载库,用于检测内存泄漏问题.

  6. SQL语句汇总(终篇)—— 表联接与联接查询

    上一篇博文说到相关子查询效率低下,那我们怎么能将不同表的信息一起查询出来呢?这就需要用到表联接. 和之前的UNION组合查询不同,UNION是将不同的表组合起来,也就是纵向联接,说白了就是竖着拼起来. ...

  7. Web程序的桌面提醒

    做web开发常会面对的一个问题是,浏览器最小化的时候如何才能向用户发送通知.解决办法大概有三种:让用户有事没事儿搂两眼页面:开发一个桌面客户端:Html5的Notification API. 目前没看 ...

  8. 跟我一起学WCF(4)——第一个WCF程序

    一.引言 前面几篇文章分享了.NET 平台下其他几种分布式技术,然而前面几种分布式技术专注于某一特定的领域,并且具有不同编程接口,这使得开发人员需要掌握多个API的使用.基于这样的原因,微软在.NET ...

  9. 在Linux CentOS 6.6上安装Python 2.7.9

    CentOS 6.6自带的是Python 2.6.6,而编译llvm需要Python 2.7以上. checking for python... /usr/bin/python checking fo ...

  10. php性能分析工具 - xhprof的安装使用

    一.前言 有用的东西还是记录下来吧,也方便以后的查询:这次记录一下xhprof的安装使用: xhprof是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低, ...