我一直试图理解这一点:
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”确实......我确实得到了一点点,就像我能够在不理解它的情况下编写类似的东西。这就是为什么我需要一些简单,详细的解释。
谢谢!
答案 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再次回滚到零。
尝试将打印语句放入代码中,并在按下按钮/
时观察currentElemetnIndex
和nextElement
的变化