语句不能以 for 循环上的闭包语句开头

Posted

技术标签:

【中文标题】语句不能以 for 循环上的闭包语句开头【英文标题】:statement cannot begin with a closure statement on for loop 【发布时间】:2015-09-28 05:41:59 【问题描述】:

我在 Xcode Playground 中遇到了奇怪的问题,我不知道在 Xcode 7 之前我是否也遇到过同样的问题。

您可以在 for 循环条件部分看到左箭头(小于)位置,第 1 和第 3 句语法有问题,第 2 和第 4 句语法正确...

我正在使用 Xcode 7,同样的问题出现在 Project(不是 Playground)上。

【问题讨论】:

【参考方案1】:

Swift 初学者的错误:运算符周围的空间很重要。这是

a<b or a < b but not a <b or a< b.

【讨论】:

之前我也遇到过同样的问题,后来我才知道和@gnasher一样 如果运算符周围的空间很大,那么 a 阅读 Swift 书籍。完全没有空格或两边都有空格 = 二元运算符。左侧的空格 = 前缀一元运算符。右侧空格 = 后缀一元运算符。【参考方案2】:

解决运算符周围空间问题的一个方法是使用“更快捷”的循环方式:

for item in array 
    // do something with item

与索引相同:

for (index, item) in array.enumerate() 
    // do something with index and item

还有map可以从另一个数组中获取修改后的数组:

let result = array.map  item in
    // apply transformation to `item`

在 Swift 中不再需要继续使用旧的 for var i = 0; ... 机制。

【讨论】:

【参考方案3】:

这个帖子似乎表明这是一个错误。 https://forums.developer.apple.com/thread/6775

【讨论】:

这个问题不仅在操场上也出现在 Project 上 不幸的是。我不是这方面的专家。我只是想帮你找到一些其他的答案。我猜你的项目可能配置错误?

以上是关于语句不能以 for 循环上的闭包语句开头的主要内容,如果未能解决你的问题,请参考以下文章

深入理解javascript闭包

闭包的常规缺陷以及唯一一种解决方案

利用闭包解决for循环里onclick事件不能捕捉实时i值问题

深入理解javascript原型和闭包(12)——简介作用域

+++++++脚本练习之for循环和if语句使用

经典闭包