美文网首页
无标题文章

无标题文章

作者: _Developer_ | 来源:发表于2016-05-06 15:04 被阅读22次

    import Cocoa

    /*//闭包表达式语法

    { (parameters) -> returnTyoe in

    statements

    }

    */

    //原始版本

    func backwards(s1: String, s2: String) -> Bool {

    return s1 > s2

    }

    let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"]

    var reversed = names.sort(backwards)

    //闭包表达式写法

    var newReversed = names.sort({ (s1: String, s2: String) -> Bool in return s1 > s2 })

    newReversed

    //上下文推断类型简写

    var contextReversed = names.sort( { s1, s2 in return s1 > s2 })

    contextReversed

    //单表达式闭包隐式返回

    var singleExpressionRevered = names.sort( { s1, s2 in s1 > s2 })

    singleExpressionRevered

    //参数名称缩写:Swift 自动为内联函数提供了参数名称缩写功能,您可以直接通过$0,$1,$2来顺序调用闭包的参数。如果您在闭包表达式中使用参数名称缩写,您可以在闭包参数列表中省略对其的定义,并且对应参数名称缩写的类型会通过函数类型进行推断。 in关键字也同样可以被省略

    var shorthandArgumentNames = names.sort( { $0 > $1 })

    //如果函数只需要闭包表达式一个参数,当您使用尾随闭包时,您甚至可以把()省略掉。

    var oneParam = names.sort(){ $0 > $1 }

    shorthandArgumentNames

    //运算符函数: Swift 的String类型定义了关于大于号 (>) 的字符串实现,其作为一个函数接受两个String类型的参数并返回Bool类型的值。 而这正好与sort(_:)方法的第二个参数需要的函数类型相符合。 因此,您可以简单地传递一个大于号,Swift可以自动推断出您想使用大于号的字符串函数实现:

    var operatorFunctions = names.sort(>)

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

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

    }

    //不使用尾随闭包进行调用

    someFunctionThat ({

    })

    相关文章

      网友评论

          本文标题:无标题文章

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