将 for 循环更改为 while 循环 - Swift



如何将此 for 循环更改为 while 循环?

 let op = ["+", "-", "*", "/"]
 for x in op {
   if display.text!.rangeOfString(x) != nil {
           y = x
           break
        }
    }

您可以使用这样的东西来创建 while 循环,该循环允许您对数组中的每个项目执行操作,前提是它是 4 个元素。

let op = ["+", "-", "*", "/"]
var count: Int = 0
while (count < 4)
{
    print(op[count])
    //perform any action with op[count] in here.
    count += 1
}

如果您真的必须使用 while 循环,这将是最接近更正的方法:

let op = ["+", "-", "*", "/"]
var opSequence = op.generate()
while let nextOp = opSequence.next() {
    print(nextOp)
    // do something with nextOp
}

然而,重要的是要理解,这对于for - in循环来说并没有太大的不同,作为一个for - in循环实际上只是上述代码的语法糖。

for - in循环更干净,更接近人们期望在这里看到的内容。

我们还可以编写一个 while 循环,为我们提供索引和值,如下所示:

let op = ["+", "-", "*", "/"]
var opSequence = op.enumerate().generate()
while let (index, nextOp) = opSequence.next() {
    print("At index (index): (nextOp)")
}

您可以将这组相同的代码应用于任何CollectionType。 但同样,这与在for - in循环的掩护下发生的事情并没有什么不同。 一个for - in循环依赖于这个返回IndexingGenerator generate()方法,该方法有一个方法next()next() 方法返回集合所包含的任何内容的可选类型,而 for - in 循环(与此 while 循环非常相似)每次迭代调用next(),只要它获得非nil值,它就会使用该值进入循环体。

主要区别在于 for - in 循环不会给您留下悬空变量(在本例中为 opSequence 变量),以及 for - in 循环更具可读性。

最新更新