如何将此for循环更改为while循环?
let op = ["+", "-", "*", "/"]
for x in op {
if display.text!.rangeOfString(x) != nil {
y = x
break
}
}
答案 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
循环更具可读性。