Есть ли способ показать следующий элемент в массиве? - PullRequest
0 голосов
/ 04 мая 2019

Я пытаюсь нажать на кнопку и распечатать следующий элемент в массиве. Я только хочу, чтобы он показывал следующий элемент при каждом нажатии кнопки.

var array = ["one", "two", "three"]

@IBAction func Button(_ sender: Any) {
     print(array[1])    
}

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

Другим способом вы можете получить элемент next из массива, чтобы сделать Iterator.Это полезно, если вам нужен исчерпывающий запас значений.

Например:

var array = ["one", "two", "three"]
var iterator = array.makeIterator()

if let value = iterator.next() {
    print(value)
}
one
if let value = iterator.next() {
    print(value)
}
two
if let value = iterator.next() {
    print(value)
}
three

Как только Iterator выходит из значений, он возвращает nil:

if let value = iterator.next() {
    print(value)
} else {
    print("out of values")
}
out of values

Вы также можетеиспользуйте Iterator в цикле for-in:

var array = ["one", "two", "three"]
var iterator = array.makeIterator()

for value in iterator {
    print(value)
}
one
two
three

Вы можете преобразовать оставшиеся элементы в Array:

var array = ["one", "two", "three"]

var iterator = array.makeIterator()
let first = iterator.next()!

let rest = Array(iterator)
print(first)
print(rest)
one
["two", "three"]
0 голосов
/ 04 мая 2019

Сделать счетчик и использовать по модулю:

var array = ["one", "two", "three"]
var counter = 0

@IBAction func Button(_ sender: Any) {
     print(array[counter % array.count])
     counter += 1
}
...