加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift入门篇-闭包和函数

发布时间:2020-12-14 02:45:37 所属栏目:百科 来源:网络整理
导读:今天主要是给大家分享的是 swift中闭包的用法,我个人觉得闭包就是函数的简写方法,如果您函数不是很熟悉请查阅swift入门篇-函数 1:函数类型 函数类型 var 变量 :(类型)- 返回值 =函数名说明: 1 :函数名 表示函数地址 2 :(类型)- 返回值 表示函数类型 3

今天主要是给大家分享的是 swift中闭包的用法,我个人觉得闭包就是函数的简写方法,如果您函数不是很熟悉请查阅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,128); line-height:1.5!important">3,128); line-height:1.5!important">4],{(s:Int) in return s>2}) println(arr) 运行结果 [4]

3:闭包简写方法

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

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

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

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

4:尾随闭包

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读