闭包(Closures)

闭包可以捕获和存储其所在上下文中任意常量和变量的引用。这就是所谓闭合并包裹着这些常量和变量,俗称闭包。

  • 全局函数是一个有名字但不会捕获任何值的闭包
  • 嵌套函数是一个有名字并可以捕获其封闭函数域内值的闭包
  • 闭包表达式是一个利用轻量级语法所写的可以捕获其上下文中变量或常量值的匿名闭包
闭包表达式(Closure Expressions)
闭包表达式语法(Closure Expression Syntax)

闭包表达式语法有如下一般形式:

{  (parameters) -> returnType in
   statements
}

闭包表达式语法可以使用常量、变量和inout类型作为参数,不能提供默认值。也可以在参数列表的最后使用可变参数。元组也可以作为参数和返回值。

let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"]
var reverted = names.sort({(s1 : String, s2 : String) -> Bool in
    return s1 > s2
})
根据上下文推断类型(Inferring Type From Context)

因为排序闭包函数是作为sort(:)方法的参数传入的,Swift 可以推断其参数和返回值的类型。sort(:)方法被一个字符串数组调用,因此其参数必须是(String, String) -> Bool类型的函数。这意味(String,String)
和Bool类型并不需要作为闭包表达式定义的一部分。因为所有的类型都可以被正确推断,返回箭头(->)和围绕在参数周围的括号也可以被省略:

reversed = names.sort( { s1, s2 in return s1 > s2 } )
尾随闭包(Trailing Closures)

闭包这块看不懂,先放一放

你可能感兴趣的:(闭包(Closures))