加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift中的闭包

发布时间:2020-12-14 02:41:16 所属栏目:百科 来源:网络整理
导读:闭包Closure是自包含的函数代码块,可以在代码中被传递和使用。Swift中的闭包与C和Objective-C中的代码块以及其他编程语言如C++中的lambdas函数比较相似。 闭包可以捕获和存储其所在上下文中任意常量和变量的引用,这就是所谓的闭合并包裹着这些常量和变量,

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读