需要有人解释这段代码

时间:2017-05-06 19:10:36

标签: arrays swift constants

我一直试图理解这一点:

var arrayOfLabels =
[
    "Hello",
    "Hey",
    "Hi",
    "Howdy"
]

@IBOutlet weak var labelHere: UILabel!

var currentElementIndex = 0

@IBAction func clickForNextElement(_ sender: UIButton) {
    currentElementIndex += 1

    let numberOfElements = arrayOfLabels.count // arrayOfLabels.count = Amount of elements in arrayOfLabels

    let nextElement = currentElementIndex % numberOfElements

    labelHere.text = arrayOfLabels[nextElement]

}

我不知道%做什么,常数为“numberOfElements”& “nextElement”确实......我确实得到了一点点,就像我能够在不理解它的情况下编写类似的东西。这就是为什么我需要一些简单,详细的解释。

谢谢!

2 个答案:

答案 0 :(得分:1)

这是代码的注释版本:

// create an array of labels
var arrayOfLabels =
[
    "Hello",
    "Hey",
    "Hi",
    "Howdy"
]

// a variable for the label
@IBOutlet weak var labelHere: UILabel!

// initialise a count
var currentElementIndex = 0

// create a function
@IBAction func clickForNextElement(_ sender: UIButton) {
    // Add one to our count
    currentElementIndex += 1

    // set numberOfElements to be how many elements are in the array (i.e. 4)
    let numberOfElements = arrayOfLabels.count // arrayOfLabels.count = Amount of elements in arrayOfLabels

    // use the % to work out remainder when dividing our ongoing count by the number of elements 
    let nextElement = currentElementIndex % numberOfElements

    // set the label text to the value of the remainder-th element
    labelHere.text = arrayOfLabels[nextElement]

}

答案 1 :(得分:0)

numberOfElements设置为arrayOfLabels中的项目数。您在该数组中有五个项目,因此numberOfElements设置为5。

百分号"%"被称为模运算符。它的作用是告诉你整数除法后的余数。所以,例如,如果你写5%3,那么它会识别出3只会进入5只剩下2只所以5%3 = 2。

在代码的上下文中,每次按下按钮时,currentElementIndex都会增加1。所以它从0开始,然后转到1,2等。

currentElementIndex小于numberOfElements时,currentElementIndex % numberOfElements将与currentElementIndex相同。您可以自己查看 - 例如,当currentElementIndex为2时尝试.2%5说"五进入两次零时间,其余为2"所以2%5 == 2而nextElement将为2

currentElementIndex增长到足以等于列表中项目数的倍数时,您希望它重新开始。第一次发生的时间是currentElementIndex == numberOfElements时,值为5和5. 5%5表示" 5进入5次,其余为0"。所以5%5 = 0,你的' nextElement`变为零。

第二次发生时,currentElementIndex会变为10.在这种情况下,10%5表示"五次进入10次,其余为零" nextElement再次回滚到零。

尝试将打印语句放入代码中,并在按下按钮/

时观察currentElemetnIndexnextElement的变化