【问题标题】:How to write complex C-style for statements in Swift 2.2如何在 Swift 2.2 中为语句编写复杂的 C 风格
【发布时间】:2016-03-24 08:55:41
【问题描述】:

如何在 Swift 2.2 中实现这样的 C 风格 for 循环?

for var level: Double = 10; level <= 100; level += 10 {

}

【问题讨论】:

  • 为什么要使用双精度?
  • 循环内需要它
  • 比一个 int 循环并在循环中创建一个 double。

标签: ios swift swift2 ezswiftextensions


【解决方案1】:
for level: Double in 10.stride(through: 100, by: 10) {
}

或功能风格:

(1...10).map { Double($0) * 10.0 }.forEach {
    print($0)
}

请不要将var 用于迭代器,也不要从循环内部更改迭代器的值。

我在这个answer中给出了更多的例子

【讨论】:

  • 很简单!
  • 谢谢。我认为旧版本更具可读性,不确定是否熟悉偏差。函数式风格根本不可读。
  • @Esq 在这种情况下,我不会使用函数式风格,但绝对是熟悉的风格。对于函数式风格,给每个闭包起一个名字(例如let printIndex = {... } 然后.forEach(printIndex))确实很有帮助。
【解决方案2】:

对于你的具体例子,Sulthan 说了什么。

更一般地说,对于真正复杂的,任何 C 风格的 for 循环:

for init; cond; step { statement }

可以转换成while:

init
while (cond) {
  statement
  step
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多