Swift 闭包 传值

语法

以下定义了一个接收参数并返回指定类型的闭包语法:

{ (parameters) -> return type in

  statements

}

尾随闭包

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

func someFunctionThatTakesAClosure(closure: () -> Void) {

 // 函数体部分

}

// 以下是不使用尾随闭包进行函数调用

someFunctionThatTakesAClosure( { // 闭包主体部分} )

// 以下是使用尾随闭包进行函数调用

someFunctionThatTakesAClosure() { // 闭包主体部分}

捕获值

闭包可以在其定义的上下文中捕获常量或变量。

即使定义这些常量和变量的原域已经不存在,闭包仍然可以在闭包函数体内引用和修改这些值。

Swift最简单的闭包形式是嵌套函数,也就是定义在其他函数的函数体内的函数。

嵌套函数可以捕获其外部函数所有的参数以及定义的常量和变量。

看这个例子:

func makeIncrementor(forIncrement amount: Int) -> () -> Int {  

  var runningTotal = 0   

 func incrementor() -> Int {     

        runningTotal += amount

        return runningTotal

    }   

 return incrementor

}

//定义闭包类型(特定的函数类型函数类型)

typealias InputClosureType = (String) -> Void

//接收上个页面传过来的闭包块

 var backClosure: InputClosureType?

//使用

self.backClosure!(tempString)

//回调

secondVC.backClosure = {

       (backStr: String) -> Void    in     

       self.showTextLabel.text = backStr

 }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,860评论 2 9
  • 86.复合 Cases 共享相同代码块的多个switch 分支 分支可以合并, 写在分支后用逗号分开。如果任何模式...
    无沣阅读 1,443评论 1 5
  • 闭包 闭包是自包含的功能块,可以在代码中传递和使用。Swift中的闭包与C和Objective-C中的块以及其他编...
    Fuuqiu阅读 383评论 0 0
  • 研究了一天闭包,然后发现尾随闭包,捕获值 这些东西!还有方法里面带闭包,在网上找了些代码,都不是看的特别明白,感觉...
    HotRay阅读 677评论 0 2
  • 类与结构 swift的结构体增添了很多类的功能: 定义函数,定义下标,有构造函数,可以扩展,还可以遵循协议来提供某...
    merlinCry阅读 322评论 0 0