美文网首页
swift中闭包(closure)

swift中闭包(closure)

作者: 玻璃瓶外的水 | 来源:发表于2016-05-27 21:31 被阅读44次

下面是一个基本的闭包:

var multiplyClosure = { (a: Int, b: Int) -> Int in

return a * b

}

这就是一个基本的闭包类型,其基本格式为{ (参数列表)-> 返回值 in 函数体}

对上面这个闭包,可以进行如下的精减

1、去掉return

var multiplyClosure = { (a: Int, b: Int) -> Int in

a * b

}

2、去掉返回值类型,让系统自己推断

var multiplyClosure = { (a: Int, b: Int) in

a * b

}

3、将参数中的类型声明去掉,这种情况要实现声明变量的类型为闭包

var multiplyClosure: (Int,Int) -> Int

multiplyClosure = { (a, b) in

a * b

}

4、最后还可以将参数列表去掉,根据参数出现的位置来处理

var multiplyClosure: (Int,Int) -> Int

multiplyClosure = {

$0 * $1

}

声明一个没有参数和返回值的闭包

let voidClosure: () -> Void = {

print("Swift is awesome")

}

voidClosure()

下面这个是闭包作为返回值的一个例子

func countingClosure() -> (() -> Int) {

print("ok")

var counter = 0

let incrementCounter: () -> Int = {

print(counter)

counter += 1

print(counter)

return counter

}

return incrementCounter

}

let counter1 = countingClosure()

let counter2 = countingClosure()

//counter1时一个闭包,闭包作为函数执行,返回int类型的值

counter1()

counter1()

counter2()

一个例子:

func mathSum(times: Int, operation: (Int) -> Int) -> Int {

var result = 0

for i in 1...times {

result += operation(i)

}

return result

}

var result1 = mathSum(10, operation: {(a: Int) -> Int in return a * a })

print(result1)

var result2 = mathSum(10, operation: {(a: Int) -> Int in fibonacci(a)})

print(result2)

相关文章

  • Swift 5.3 - SE-0279 Multiple Tra

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

  • Swift 闭包

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

  • [Swift5.1] 7-闭包

    闭包表达式(Closure Expression) 在Swift中,可以通过func定义一个函数,也可以通过闭包表...

  • Swift底层原理探索5----闭包

    闭包表达式(Closure Expression) 在Swift中,可以通过func定义一个函数,也可以通过闭包表...

  • 闭包

    闭包表达式(Closure Expression) 在Swift中,可以通过func定义一个函数,也可以通过闭包表...

  • 关于rust中的闭包(一)

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

  • swift中闭包(closure)

    下面是一个基本的闭包: var multiplyClosure = { (a: Int, b: Int) -> I...

  • 理解闭包

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

  • Swift5.0 - day4-闭包、属性、方法、下标

    一、闭包 1.1、闭包表达式(Closure Expression)在 Swift 里面可以通过函数 func 定...

  • Swift:尾随闭包(Trailing closure synt

    闭包(closure)在Swift中扮演了重要角色,而尾随闭包只是闭包的一种精简方式,就如闭包参数的$0和$1一样...

网友评论

      本文标题:swift中闭包(closure)

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