Swift入门篇-闭包和函数
今天主要是给大家分享的是 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入门篇-闭包和函数的更多相关文章
- Swift入门篇-Hello World
提示:如果您使用手机和平板电脑看到这篇文章,您请在WIFI的环境下阅读,里面有很多图片, 会浪费很多流量. 博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 最近这2天主要 ...
- Swift入门篇-循环语句
今天早上一起来所有新闻都是报道荷兰5-1战胜西班牙,我一看没有搞错吧,顿时想都如果中国队vs荷兰队也不至于会输的怎么惨吧,难道是荷兰队开挂了,于是我看了一下昨天比赛的视频直播,还真是新闻报道的那样,顿 ...
- Swift入门篇-字符串和字符
今天主要是介绍一下字符串的用法 ,字符串的语法和object-c语法不太一样,但是思想是一样,就是写法不太一样.如果您对.net和java语法比较熟悉的话,那您几乎没有深压力.如果您对swift 基本 ...
- Swift入门篇-基本类型(2)
现在我也在学习Swift语言,常常去逛很多苹果社区和论坛,看到了圈子很多奇怪的现象,发现很多人都赶忙去翻译 Swift书籍 和 发布Swift的视频 .他们这种对新知识的探索精神我本人是很佩服的.但是 ...
- Python入门篇-高阶函数
Python入门篇-高阶函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.高级函数 1>.First Class Object 函数在Python中是一等公民 函数也 ...
- Swift入门篇-swift简介
潜水博客园很多年,闲来无事,聊一下自己的经历,语文不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 在前期 ios入门篇 -hello Word(1) 文章中介绍我这半年准备写一些ios ...
- swift入门篇-函数
今天给大家介绍 swift函数,swift函数和c#,js的写法大致一直,但是与object-c写法有很大不同点.废话不多说,直接开始了. 1:函数 --常量参数 func 函数名( 参数变量:类型 ...
- Swift入门篇-集合
一:数组 一:可变数组 定义:数组使用有序列表存储相同类型的多重数据. 格式: 第一种格式 var 变量: 类型[] = [变量值,变量值,...] 第二种格式 var 变量 =[变量值,变量值,.. ...
- Swift入门篇-基本类型(3)
一:元组 格式 变量或常量关键字 元组变量 = ( 变量,变量, …) 说明: : 元组变量还是一个变量,只不过表现方式和其他变量不一样 :()括号里面可以放入N个变量组成 例子: import Fo ...
随机推荐
- How to Use JUnit With JMeter
Do you need to use JUnit in your testing processes? To answer this question, let's take a look first ...
- oracle 未找到提供程序。该程序可能未正确安装
使用ADO连接oracle数据库时,连接串使用Provider=OraOLEDB.Oracle时提示"未找到提供程序.该程序可能未正确安装". 原因:由于我之间安装oracle_o ...
- 第一个jsp代码实现简单计算器
a.新建mycal.Jsp,把简单计算机的框架写出来: <form action="myresult.jsp"> 请输入第一个数:<input type=&quo ...
- 新建MMS草稿保存后,再进入草稿修改收件人,退出到会话界面,会显示两条草稿
分析原因:新建彩信草稿,保存后,再打开草稿,修改收件人,再保存会产生新的threadId, 而之前保存的草稿theadId还存在,导致此问题. (必现. 解决方法:将原来的Thread_id和新的收件 ...
- Nginx虚拟目录支持PHP配置
感谢作者:http://blog.csdn.net/fangaoxin/article/details/7030139 location ~ ^/test/.+\.php$ { alias /var/ ...
- 关于java中线程休眠的另一种写法
编辑器加载中... 优先使用TimeUnit类中的sleep() TimeUnit是什么? TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的 ...
- 使用my exclipse对数据库进行操作(1)
一.查找 public class class1 { public static void main(String[] args) { // TODO Auto-generated method st ...
- 再详细的介绍一下Unity5的AssetBundle
之前曾经写了一篇博客介绍Unity5的AssetBundle,结果似乎很受关注.不过似乎很多人看了之后都不懂,主要是因为不太明白AssetBundle是什么,它的依赖关系和结构是什么的,就直接想拿代码 ...
- BufferedOutputStream的学习
今天写了一下一段代码,结果打开文件却发现要写入文件的内容不仅没写入,原来的内容也消失了,而控制台却显示原文件的内容都被读取出来了,代码如下: FileInputStream fileInputStre ...
- dubbo demo实现
粗略的写了一个dubbo的demo,使用了alibaba的dubbo,还有zookeeper来做配置中心 参考资料地址: http://dubbo.io/User+Guide-zh.htm#UserG ...