Скажем, у вас есть
for i in 0 ... 10 {
print(i)
}
, конечно, он напечатает 0,1,2,3,4,5,6,7,8,9,10
for i in 0 ..< 5 {
это 0,1,2,3,4.
Я хочу начать с определенного целого числа и пинг-понга наружу за счет числа чисел
Итак,
for i in function or something (10, 3)
это 3 4 2 5 1 6 0 7 8 9
for i in function or something (10, 8) {
будет 8 9 7 6 5 4 3 2 1 0
for i in function or something (10, 2) {
будет 2 3 1 4 0 5 6 7 8 9
Так что это просто внешний пинг-понг.
Что я должен печатать там, где написал function or something (10, 2)
?
Возможно, существует какой-то действительно крутой синтаксис, похожий на строчку 0 # 7 # 10
.
Как насчет чего-то вроде (0..<10).outPong(3)
?
Как сформулировать такую последовательность ?
Вот наивный пример того, как вы будете выполнять внешний пинг-понг на уровне вызова.
Вызовите exampleLoad
для каждого из элементов в RA, внешний пингпоинг:
func loadItemsPongwise(startWith: Int) {
// RA = ... this is your array of some type
exampleLoad(startWith)
let k = RA.count
var howManyDone: Int = 0
var distance: Int = 1
while howManyDone < ( k - 1 ) {
let tryRight = alreadyLoaded + distance
if tryRight < k {
howManyDone = howManyDone + 1
exampleLoad(RA[tryRight])
}
let tryLeft = alreadyLoaded - distance
if tryLeft >= 0 {
howManyDone = howManyDone + 1
exampleLoad(RA[tryLeft])
}
distance = distance + 1
}
}
Конечно, что-то вроде этого будет намного приятнее:
func loadItemsPongwise(startWith: Int) {
for i in ???? {
exampleLoad(i)
}
}