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

Swift的学习(闭包2续)

发布时间:2020-12-14 06:44:21 所属栏目:百科 来源:网络整理
导读:2、尾随闭包 (Trailing Closures) 语法不同而已,意思是一致的; 最后一个参数是函数,及闭包时,及尾随闭包;当你的函数里有一个参数 是函数,并且描述很长,这时你可以将其放在参数的最后;及尾随闭包 // 定义了一个函数 两个参数,后一个是函数func som

2、尾随闭包 (Trailing Closures) 语法不同而已,意思是一致的; 最后一个参数是函数,及闭包时,及尾随闭包;当你的函数里有一个参数 是函数,并且描述很长,这时你可以将其放在参数的最后;及尾随闭包

//定义了一个函数 两个参数,后一个是函数
func someFunctionThatTakesAClosures(params1:String,params2:()->Void) { print(params1) params2() } //正常语法的使用 someFunctionThatTakesAClosures("hello",params2: { print("正常调用") }) //尾随闭包的使用 someFunctionThatTakesAClosures("你好") { print("尾随闭包调用") }
//如果只有闭包 一个参数,此函数 在使用时()可以省去
func testTrailing(params:()->Void) { params() } testTrailing { print("测试只有一个闭包参数的函数") }
//尾随闭包的练习
let digitName=[0:"zero",1:"one",2:"two",3:"three",4:"four",5:"five"]
let numberArray=[14,22,123]
let resultC=numberArray.map { (resultA) -> String in
    var resultA=resultA
    print(resultA)
    return "你好(resultA)"
}
print(resultC)//结果 ["你好14","你好22","你好123"]
let resultD=digitName.map { (key,value) -> Void in
    print(key,value)
}
print(resultD)//结果 [(),(),()]

//有些理解只可意会,不可言传;通过这个例子大家自己对他理解吧

3、捕获值 (Captureing Values) 可以理解为在内部函数能够访问传进去的值

func makeIncrementer(params amcount:Int) -> ()->Int {

    var runningToal=0
    func incrementer()->Int{

      runningToal+=amcount
        return runningToal
    }
    return incrementer

}

  var resultI=makeIncrementer(params: 10)
   print(resultI(),resultI(),resultI())//结果 10 20 30

//incrementer()单独拿出来是没有意义的

4闭包是引用类型

let also=resultI
   print(also())//结果 40

(编辑:李大同)

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

    推荐文章
      热点阅读