美文网首页
swift4 闭包Closure参数捕获表

swift4 闭包Closure参数捕获表

作者: George2016 | 来源:发表于2018-03-08 14:20 被阅读69次

一、swift闭包的定义

//一般形式
let calAdd:(Int,Int)->(Int) = {
    (a:Int,b:Int) -> Int in
    return a + b
}
print(calAdd(100,150))

//别名形式
typealias Clousure = (Int, Int)->Int
let calAdd:Clousure = {
    (a,b) in
    return a+b
}
calAdd(100,200)
  1. 推荐别名定义闭包,因为很容易、清楚的看出闭包的参数和返回值。
  2. 别纠结为什么用in作为传入参数和包体的分隔符,总得区分一下啊。

二、闭包中的参数用中括号括起来表示什么意思

//案例一
var food = "apple"
let closure = {
    //这里也是我一直不明白为什么用中括号,而不是用小括号
    [food] in
    print("I like eat \(food)")
}
food = "orange"
closure()
//输出:I like eat apple
//案例二
var food = "apple"
let closure = {
    //这里注释掉
    //[food] in
    print("I like eat \(food)")
}
food = "orange"
closure()
//输出:I like eat orange
//案例三
var food = "apple"
let closure = {
    (food: String) in
    print("I like eat \(food)")
}
food = "orange"
closure(food)
  1. 用中括号表示的是一个捕获参数的列表,当闭包被声明的时候,参数列表也会创建一份拷贝。所以即使再次给food赋值的时候,已经不能改变闭包里面的参数了。
  2. 当闭包无参数,无返回值时,可以省略闭包中的in关键字。
  3. 用小括号表示的是定义闭包的传入参数,使用闭包的时候也需要带上参数。

相关文章

  • swift4 闭包Closure参数捕获表

    一、swift闭包的定义 推荐别名定义闭包,因为很容易、清楚的看出闭包的参数和返回值。别纠结为什么用in作为传入参...

  • Rust编程语言-13-函数式编程(闭包和迭代器)

    Rust语言的设计吸收了许多其它语言的优秀设计,比如函数式编程和闭包 闭包closure 能捕获环境参数的匿名函数...

  • 07-闭包

    闭包表达式(Closure Expression) 闭包表达式的简写 尾随闭包 示例 - 数组的排序 忽略参数 闭...

  • Swift 5.3 - SE-0279 Multiple Tra

    在最初 Swift 的定义中,当方法的最后一个参数为闭包时,称该闭包为尾随闭包(trailing closure)...

  • 关于rust中的闭包(一)

    闭包 在计算机中,闭包 Closure, 又称词法闭包 Lexical Closure 或函数闭包 functio...

  • 关于闭包

    闭包的英文是closure,又称词法闭包(Lexical Closure)和函数闭包(Function Closu...

  • 理解闭包

    闭包 何为闭包 闭包(Closure)是词法闭包(Lexical Closure)的缩写 高级程序设计中写有权访问...

  • Swift 闭包

    @Author Swift 闭包(Closure) 闭包是一种可以在代码中作为参数传递,自含的功能块。 闭包类似于...

  • python之闭包与装饰器

    1 闭包 维基百科给出的解析:闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭...

  • 闭包,定时器

    问题 1.什么是闭包? 有什么作用 闭包(英语:Closure),又称词法闭包(Lexical Closure)或...

网友评论

      本文标题:swift4 闭包Closure参数捕获表

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