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 ...
随机推荐
- com.apache.dc.query.Query所属包名apache-common-sid.jar
com.apache.dc.query.Query所属包名apache-common-sid.jar 首先这个类是基于HQL的,好多方法里面要传String clzz, 刚开始我真不知道这个参数传什么 ...
- Github两步认证
获取密钥:ssh-keygen -t rsa 切换到公钥所在路径:cd .ssh 查看该路径下的所有文件:ls 查看公钥:cat id_rsa.pub 获取密钥之后,去https://github. ...
- ASP.NET 获取不同frame中的控件
最近在做网站时遇到一个问题,需要获取不同frame中的控件,请教了一些同事,他们都说是无法取到的, 在网上查找了很多资料,找到了解决方法,现在整理一下当初的解决思路: 1.我需要在mainFrame中 ...
- struts的DevMode模式
在实际应用开发或者是产品部署的时候,对应着两种模式:开发模式(devMode):此时 DevMode=ture: 产品模式(proMode):此时 DevMode=false: 在一些服务器或者框架 ...
- 还在花钱搞开发?猿团YTFCloud,零基础照样做专业APP
近日,猿团科技再推新品:YTFCloud.这是一套一体化的云端解决方案,用户可以通过平台提供的各类解决方案,一键创建应用,也就是说,YTFCloud实现了APP的DIY自制,用户无需懂得编程,零基础制 ...
- 混合硬盘的U310重装系统
最早接触U310 是在半年前,那时候同学在用的就是U310,需要升级Windows 8 依照以往的经验,弄了一张Windows 8的启动U盘,当在选择磁盘的时候居然发现没有可选项!这个有点出乎意料…… ...
- 学习WCF之——wcf程序的创建
这是我参考的主要资料——wcf学习之旅:http://www.cnblogs.com/artech/archive/2007/02/26/656901.html 首先,如博客上介绍的一样,创建空白的项 ...
- javaweb 乱码---汉字存入mysql数据库中变成乱码
今天郁闷了一天,java程序在向mysql插入数据前不是乱码,数据库安装时也选了编码为utf8(和我程序的编码格式一致).可是插入数据就变成乱码,相当郁闷. 原因:mysql的配置文件中的编码并没有改 ...
- C++ Primer学习笔记一
/* 题目要求把字符串BRGBBGRRGBBGBBBGRRGBGRG按RGB顺序排列,空间复杂度为O(1) */#include<iostream> using namespace std ...
- [51单片机] SPI nRF24L01无线 [可以放在2个单片机里实现通信]
main.c #include<reg51.h> #include"2401.h" #define uint unsigned int #define uchar un ...