Swift中的闭包概念类似于Javascript中的闭包

Is concept of closures in Swift similar to closures in Javascript?

本文关键字:闭包 Javascript 类似于 Swift      更新时间:2023-09-26

Swift中闭包的一般概念是否与Javascript中的闭包相似,或者它们使用相同的"闭包"一词,但规则不同?具体来说,(引用我朋友的话)Javascript中的闭包是"只能查看创建位置的水晶球"。

所以,在Javascript中,这段代码可以工作:

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

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

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

快速闭包捕获局部变量,以满足您的"水晶球只能在创建时查看"的要求。

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

JavaScript闭包内循环-简单的实际例子

Swift版本:

var funcs: [()->()] = []
for i in 0...3 {
  funcs += {
    println(i)
  }
}
for i in 0...3 {
  println(funcs[i]())
}

生成结果0,1,2,3