美文网首页
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闭包

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