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

时间:2016-04-21 11:49:56

标签: swift loops for-loop while-loop

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

 let op = ["+", "-", "*", "/"]

 for x in op {
   if display.text!.rangeOfString(x) != nil {
           y = x
           break
        }
    }

2 个答案:

答案 0 :(得分:0)

你可以使用类似这样的东西来创建一个while循环,让你可以为数组中的每个项做一个动作,只要它是4个元素。

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

答案 1 :(得分:0)

如果你真的必须使用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循环依赖于此generate()方法,该方法返回IndexingGenerator,其方法为next()next()方法返回集合所包含的任意类型,for - in循环与此while循环非常相似,每次调用next()迭代,只要它得到非nil值,它就会以该值进入循环体。

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