Swift中的闭包

闭包Closure是自包含的函数代码块,可以在代码中被传递和使用。Swift中的闭包与C和Objective-C中的代码块以及其他编程语言如C++中的lambdas函数比较相似。

闭包可以捕获和存储其所在上下文中任意常量和变量的引用,这就是所谓的闭合并包裹着这些常量和变量,俗称闭包。Swift会管理在捕获过程中涉及到的所有内存操作。

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

{ (parameters) -> returnType in
    statements
}

闭包表达式:

  • 参数:可以是常量、变量和inout类型,不提供认值,也可以在参数列表的最后使用可变参数。
  • 返回值:元组也可以作为返回值。

2.根据上下文推断参数类型

reversed=sorted(names,{s1,s2 in return s1>s2})

实际上任何情况下,通过内联闭包表达式构造的闭包作为参数传递给函数时,都可以推断出闭包的参数和返回值类型,这意味着几乎不需要利用完整格式构造任何内联闭包。

3.尾部闭包

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

let manager=AFHTTPRequestOperationManager(baseURL:nil)
manager.responseSerializer=AFHTTPResponseSerializer()
manager.GET(urlpath,parameters:nil,success:{
        (request:AFHTTPRequestOperation!,obj:AnyObject!) ->  Void in
        print("ok")
                })
{
    (request:AFHTTPRequestOperation!,error:NSError!) ->Void  in
    print("error")
}

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...