在Swift中,我理解闭包保留它们的环境,而普通函数则不保留。
考虑下面的
考虑下面的
f
(返回一个函数)和h
(返回一个闭包)。f()()
和h()()
都返回3
。为什么f()()
不会导致运行时错误?func f() -> () -> Int {
let a = 3
func g() -> Int {
return a
}
return g
}
func h() -> () -> Int {
let a = 3
return { () in a }
}
in
)。 - Danyal Aytekin