首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift中闭包的概念与Javascript中的闭包相似吗?

Swift中闭包的概念与Javascript中的闭包相似吗?
EN

Stack Overflow用户
提问于 2014-07-10 21:42:24
回答 1查看 1.5K关注 0票数 5

Swift中闭包的一般概念是否类似于Javascript中的闭包,还是使用了相同的单词“闭包”,但规则不同?具体来说,(引用我朋友的话) Javascript中的闭包是“水晶球,它只能在创建它的地方窥视”。

因此,在Javascript中,此代码工作:

代码语言:javascript
复制
var outside = 5;
function test() {
 alert(outside); // returns 5
}

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-10 21:49:37

Swift闭包捕获局部变量,因此满足您的“水晶球,只能窥视它创建的地方”的要求。

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

内部循环JavaScript闭包-简单实用示例

Swift等价物:

代码语言:javascript
复制
var funcs: [()->()] = []

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

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

产生结果0,1,2,3

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24686806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档