【发布时间】:2016-09-28 15:33:12
【问题描述】:
Apple 在 Swift 文档中这样说:
闭包是可以传递的独立功能块 周围并在您的代码中使用。 Swift 中的闭包类似于块 在 C 和 Objective-C 以及其他编程语言中的 lambdas 中。
我以为是First-class functions的定义
他们也这样说:
闭包可以捕获和存储对任何常量的引用和 变量来自定义它们的上下文。这被称为 关闭这些常量和变量。 Swift 处理所有 为您捕获的内存管理。
我认为这是对闭包的定义,而另一个定义是针对一流函数的,但苹果似乎将它们放在一起并称之为闭包。
我是不是误会了什么?还是 Apple 调用闭包和一流的函数闭包?
我已经编写了这个示例代码,只是想知道我在编写的 cmets 中是否正确?
// '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()
【问题讨论】:
-
一切看起来都不错——闭包可以获取它们之外的参数,包括
self.(必须是明确的)。看看stackoverflow.com/questions/29022985/… -
如果您觉得您的问题已经得到满足,请接受其中一个答案
标签: swift closures first-class-functions