美文网首页
swift中的尾随闭包

swift中的尾随闭包

作者: 陈藩 | 来源:发表于2018-05-10 17:12 被阅读0次

swift中的尾随闭包

如果需要将一个很长的闭包表达式作为最后一个参数传递给函数,可以使用尾随闭包来增强函数的可读性。尾随闭包是一个书写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用,在使用尾随闭包时,可以不用写出他的参数标签:

func someFunctionThatTakesAClousure(closure:()->void){
//函数体部分
}

以下是不使用尾随闭包进行函数调用
someFunctionThatTakesAClosure(closure:{
//闭包主体部分
})

以下是使用尾随闭包进行函数调用
someFunctionThatTakesAClosure(){
//闭包主体部分
}

sorted(by:)方法参数的字符串排序闭包可以改写为:

reversedNames = names.sorted(){$0>$1}

如果闭包表达式是函数或方法的唯一参数,则当使用尾随闭包时,甚至可以把()省略掉

reverseNams = names.sorted{$0>$1}

当闭包非常长以至于不能在一行中书写时,尾随闭包变得非常有用。eg

swift的Array类型有一个map(_:)方法,这个方法获取一个闭包表达式作为其唯一参数。该闭包函数会为数组中的每一个元素调用一次,并返回该元素所映射的值。具体的映射方式和返回值类型由闭包来指定。

当提供给数组的闭包应用于每个数组元素后,map(_:)方法将返回一个新的数组,**数组中包含了与原数组中的元素一一对应的映射后的值。
**

eg 将Int类型数组[16,58,10]转换为包含对应String类型的值的数组[OneSix,FiveEight,FiveOneZero]

let digitNames = [ 0: "Zero", 1: "One", 2: "Two", 3: "Three", 4: "Four", 5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine" ] let numbers = [16, 58, 510]

现在可以通过传递一个尾随闭包给numbers数组的map(_:)方法来创建对应的字符串版本数组:

let strings = numbers.map{ (number)->String in var number = number var outPut = "" repeat { output = digitNames[number %10]! + output number/=10 }while number>0 return output }

map(_:)为数组中每一个元素调用了一次闭包表达式。在本例子中,局部变量number的值由闭包中的number参数获得,因此可以在闭包函数体内对其进行修改,(闭包或者函数的参数总是常量),闭包表达式指定了返回类型为String,以表明存储映射值的新数组类型为String。

闭包表达式在每次被调用的时候,创建了一个叫做output的字符串并返回。其使用求余运算符计算最后一位数字并利用digitNames字典获取所映射的字符串。这个闭包能够用于创建任意正整数的字符串表示。

相关文章

  • 闭包

    闭包 本节内容包括: 闭包表达式 尾随闭包 值捕获 闭包是引用类型 Swift 中的闭包与 C 和 Objecti...

  • Swift 难点

    关于Swift的闭包,尾随闭包,Swift 中类型检测使用关键字is,类型转换使用关键字as。Any类,和AnyC...

  • Swift 5.3 - SE-0279 Multiple Tra

    在最初 Swift 的定义中,当方法的最后一个参数为闭包时,称该闭包为尾随闭包(trailing closure)...

  • Swift 5.1 (7) - 闭包

    级别: ★☆☆☆☆标签:「iOS」「Swift 5.1」「闭包」「逃逸闭包」「尾随闭包」作者: 沐灵洛审校: Qi...

  • swift中的尾随闭包

    swift中的尾随闭包 如果需要将一个很长的闭包表达式作为最后一个参数传递给函数,可以使用尾随闭包来增强函数的可读...

  • Swift入门二(对象函数)

    函数 闭包 GCD 尾随闭包 闭包循环引用解决(OC) 闭包循环引用解决(swift推荐) 面向对象 命名空间: ...

  • iOS开发之Swift篇(7)—— 闭包

    目录 版本 闭包的定义及使用 尾随闭包 逃逸闭包 版本 Xcode 11.0Swift 5.1 闭包的定义及使用 ...

  • Swift:尾随闭包(Trailing closure synt

    闭包(closure)在Swift中扮演了重要角色,而尾随闭包只是闭包的一种精简方式,就如闭包参数的$0和$1一样...

  • Swift尾随闭包

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

  • Swift - 尾随闭包

网友评论

      本文标题:swift中的尾随闭包

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