在 Swift 文档中,Apple 是这样说的:
闭包是可以在代码中传递和使用的独立功能块。Swift 中的闭包类似于 C 和 Objective-C 中的块以及其他编程语言中的 lambda。
我认为这是一流功能的定义
他们也这样说:
闭包可以从定义它们的上下文中捕获和存储对任何常量和变量的引用。这被称为关闭这些常量和变量。Swift 为您处理所有捕获的内存管理。
我认为这是闭包的定义,而另一个定义是针对一流函数的,但苹果似乎将它们放在一起并称之为闭包。
我误解了什么吗?还是苹果调用闭包和一流的函数闭包?
我已经编写了这个示例代码,只是想知道我在书面评论中是否正确?
// 'a' takes a first class function, which makes 'a' a higher order function
func a(ch: () -> Void){
print("Something")
ch() // 'ch' is a first class function
print("Ended")
}
func closureFunc(){
var num = 2
a({
// access to 'num' is possible by closures
num = num*2
print(num)
})
}
closureFunc()