不能赋值:'我'是一个'让'常数在迅速

所以基本上我试图在2个标签中分配2个随机数到20,用户将不得不find正确的结果。 根据答案是否正确,将出现不同的观点,这将发生10次。 问题是我在我使用的计数器“i”上出现错误,即使我将其声明为variables,但我得到一个错误,说它是一个常量。

@IBAction func submit(sender: AnyObject) { //declarations var i: Int //counter for 10 repetitions var result = 0 for i in 0..<10 { //generate 2 random numbers up to 20 var rn1 = arc4random_uniform(20) var rn2 = arc4random_uniform(20) //assign the rundom numbers to the labels n1.text = String(rn1) n2.text = String(rn2) result = Int((rn1) + (rn2)) //show respective view based on if answer is correct or not if answer.text == String(result) { i = i + 1 //here i get the error: cannot assign to value 'i' is a 'let' constant performSegueWithIdentifier("firstsegue", sender: self) }else { performSegueWithIdentifier("wrong", sender: self) } } } 

for var i in 0..<10 {使用for var i in 0..<10 {来克服错误。

for i in 1..<10中实际上是for范围内的i的重新声明,它默认let并覆盖你之前的声明。 不知道你的逻辑在做什么,介意,递增i在循环中。 循环执行的次数没有区别 – 见下:

 var i: Int = -1 print("Outer scope, i=\(i)") // i=-1 for var i in 0..<10 { // Will be executed 10 times, regardless of what you do to i in the loop print("Inner scope, i=\(i)") // i=0...9, including all if i == 2 { i = i + 10 print("Inner, modified i=\(i)") // i=12 } } print("Outer scope, i=\(i)") // i=-1 /* Complete output: Outer scope, i=-1 Inner scope, i=0 Inner scope, i=1 Inner scope, i=2 Inner, modified i=12 Inner scope, i=3 Inner scope, i=4 Inner scope, i=5 Inner scope, i=6 Inner scope, i=7 Inner scope, i=8 Inner scope, i=9 Outer scope, i=-1 */ 

重要的一点是Swift for i in循环不是 C for (i=0; i<10; i++)循环。