博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift入门篇-闭包和函数
阅读量:5768 次
发布时间:2019-06-18

本文共 2131 字,大约阅读时间需要 7 分钟。

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

 

1:函数类型

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

例子

/*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(12) //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([1,2,3,4],{(s:Int) in return s>2})println(arr)运行结果[3, 4]

 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([1,2,3,4],{s in return s>2})//第二种简写 : 省略 参数类型和括号,return关键字Arr = GetList([1,2,3,4], {s in s>2}) //第三种简写 : 参数名称缩写 Arr = GetList([1,2,3,4],{$0>2}) //其中$0表示第一个参数println(Arr)以上3种用法的运行结果为[3, 4]

 4:尾随闭包

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

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

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

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

转载于:https://www.cnblogs.com/gcb999/p/3797072.html

你可能感兴趣的文章
MindNode使用
查看>>
SQL Server 2016 Alwayson新增功能
查看>>
HTTP库Axios
查看>>
CentOS7下安装python-pip
查看>>
认知计算 Cognitive Computing
查看>>
左手坐标系和右手坐标系 ZZ
查看>>
陀螺仪主要性能指标
查看>>
Java 架构师眼中的 HTTP 协议
查看>>
Linux 目录结构和常用命令
查看>>
Linux内存管理之mmap详解 (可用于android底层内存调试)
查看>>
利润表(年末)未分配利润公式备份
查看>>
Android开发中ViewStub的应用方法
查看>>
gen already exists but is not a source folder. Convert to a source folder or rename it 的解决办法...
查看>>
HDOJ-2069Coin Change(母函数加强)
查看>>
遍历Map的四种方法
查看>>
JAVA学习:maven开发环境快速搭建
查看>>
Altium Designer 小记
查看>>
【Linux高级驱动】I2C驱动框架分析
查看>>
赵雅智:js知识点汇总
查看>>
二维有序数组查找数字
查看>>