微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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")
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐