美文网首页
Swift5.1闭包

Swift5.1闭包

作者: 037e3257fa3b | 来源:发表于2020-09-09 16:14 被阅读0次

7.闭包

  • 闭包表达式

    闭包表达式一般形式:
    {
        (参数列表) -> 返回值类型 in
        statements
    }
    1.闭包常用方式
    //作为非空变量
    var closureName: (ParameterTypes) -> ReturnType
    //作为可为空变量
    var closureName: ((ParameterTypes) -> ReturnType)?
    //作为别名
    typealias ClosureType = (ParameterTypes) -> ReturnType
    //作为静态变量
    let closureName: ClosureType = { ... }
    
    2.闭包普通写法
    // 声明一个闭包(有两个整形参数,且返回值为整形的闭包)
        var sumClosure:((a: Int, b: Int) -> Int)
    // 实现闭包
    sumClosure = {  (a: Int, b: Int) -> Int in 
        return a + b
    }
    // 调用
    let sum = sumClosure(a: 10,b: 20)print(sum)
    
    3.闭包类型别名写法
    // 有参数无返回值的
    typealias Myclosure1 = (String) ->Void
    // 有参数无返回值的
    typealias Myclosure2=(String) ->String
    // 两个参数,一个返回值
    typealias Myclosure3=(String, String)->String
    // 无参数,无返回值
    typealias Myclosure4=()->Void
    // 使用如下
    var closure1: Myclosure1?
    closure1 = { (str: String) ->Void in
           print(str)
    }
    closure1!("HelloWorld")
    参考链接:https://blog.csdn.net/zgpeace/article/details/103903884
    
  • 尾随闭包:尾随闭包是一个书写在函数圆括号之后的闭包表达式,函数支持将其作为最后一个参数调⽤用

    //带参数与不带参数的尾随闭包
    func someClosureWithoutArgs(closure: () -> Void) {
            
    }  
    func someClosure(arg: String, closure: () -> Void) {
            
    }
    //在使⽤用尾随闭包时,你不用写出它的参数标签
    someClosureWithoutArgs {
         //statements
    }
    someClosure(arg: "string") {
         //statements
    }
    
    
  • 函数和闭包都是引用类型:无论你将函数或闭包赋值给一个常量还是变量,你实际上都是将常量或变量的值设置为对应函数或闭包的引用

  • 逃逸闭包:当一个闭包作为参数传到一个函数中,但是这个闭包在函数返回之后才被执行,我们称该闭包从函数中逃逸。当你定义接受闭包作为参数的函数时,你可以在参数名之前标注 @escaping,⽤来指明这个闭包是允许“逃逸”出这个函数的

  • 自动闭包:⾃动闭包是一种⾃自动创建的闭包,用于包装传递给函数作为参数的表达式。这种闭包不接受任何参数,当它被调用的时候,会返回被包装在其中的表达式的值。

相关文章

  • Swift5.1闭包

    7.闭包 闭包表达式闭包表达式一般形式:{ (参数列表) -> 返回值类型 in statements...

  • [Swift5.1] 7-闭包

    闭包表达式(Closure Expression) 在Swift中,可以通过func定义一个函数,也可以通过闭包表...

  • swift-闭包

    闭包 闭包定义 闭包简化 - 尾随闭包 闭包参数 闭包返回值 闭包的循环引用

  • 闭包,闭包,闭包

    1、这家伙到底是什么? 网上关于这个的讨论的太多了太多了,有各种的举例子,但是大部分还在寻找这个答案的小伙伴对于变...

  • Swift5.1—闭包的循环强引用

    前面我们看到了循环强引用是在两个类实例属性互相保持对方的强引用时产生的,还知道了如何用弱引用和无主引用来打破这些循...

  • Swift5.1学习随笔之闭包Closure

    闭包跟闭包表达式不是一个东西 闭包定义:1、一个函数和它所捕获的变量、常量环境组合起来,称之为闭包 一般指定义在函...

  • 闭包-Closures [swift 5.1]

    闭包的语法 尾随闭包 闭包逃离 自动闭包

  • Day7 闭包(Closures)

    本页包含内容:• 闭包表达式• 尾随闭包• 值捕获• 闭包是引用类型• 逃逸闭包• 自动闭包 1、闭包表达式 闭包...

  • Python闭包

    闭包 = 环境变量 + 函数 调用闭包内部的环境变量 闭包的经典误区 闭包与非闭包实现人类走路 非闭包 闭包

  • 闭包(closure)

    ● 闭包基础 ● 闭包作用 ● 闭包经典例子 ● 闭包应用 ● 闭包缺点 ● 参考资料 1、闭包基础 作用域和作...

网友评论

      本文标题:Swift5.1闭包

      本文链接:https://www.haomeiwen.com/subject/ocneektx.html