gpt4 book ai didi

javascript - Swift 中的闭包概念是否类似于 Javascript 中的闭包?

转载 作者:可可西里 更新时间:2023-10-31 23:45:47 24 4
gpt4 key购买 nike

Swift 中闭包的一般概念是否类似于 Javascript 中的闭包,或者它们是否使用相同的词“闭包”但规则不同?具体来说,(引用我的 friend 的话)Javascript 中的闭包是“只能在创建它的地方查看的 Crystal 球”。

因此,在 Javascript 中,这段代码有效:

var outside = 5;
function test() {
alert(outside); // returns 5
}

这是否意味着在 Swift 中,如果我以任何可能的方式创建闭包,它将有权访问创建闭包的同一范围内的所有局部变量?

(我看过维基百科对 closure in programming 的定义,但感觉太模糊了——具体来说,闭包跟踪的值是什么)

最佳答案

Swift 闭包捕获局部变量,从而满足您“只能在创建它的地方查看 Crystal 球”的要求。

由于作用域的不同,Swift 不会遇到在循环中使用闭包的相同问题

JavaScript closure inside loops – simple practical example

Swift 等价物:

var funcs: [()->()] = []

for i in 0...3 {
funcs += {
println(i)
}
}

for i in 0...3 {
println(funcs[i]())
}

产生结果 0, 1, 2, 3

关于javascript - Swift 中的闭包概念是否类似于 Javascript 中的闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24686806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com