2016-04-21 61 views
-3

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

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

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

为了更好地理解,只需学习控制流表单swift即可:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ControlFlow.html –

+0

您不应该这样做。如果你需要为数组中的每一项操作,你应该使用'for'-'in'循环。没有其他的东西 – nhgrif

回答

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

':Int'是不必要的 - 这是'count'的假定类型。你可能希望'while count nhgrif

+0

谢谢,这工作也很好! –

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循环覆盖范围内发生的情况没有什么不同。 A for - in loop依赖此generate()方法,该方法返回IndexingGenerator,该方法具有方法next()next()方法返回一个可选类型,不管集合是什么,以及for - in循环,就像这样,while循环,每次迭代调用next(),并且只要它得到非nil值,它就会进入循环体那个价值。

的主要区别是一个事实,即for - in循环不会离开你悬空变量(在这个例子中,opSequence变量)和事实for - in环为单纯了很多更具可读性。