Использование Stride в Swift 2.0

Я пытаюсь понять, как использовать функции Stride в Swift.

Кажется, это снова изменилось, начиная с Xcode 7.0 beta 6.

Раньше я мог использовать

let strideAmount = stride(from: 0, to: items.count, by: splitSize)
let sets = strideAmount.map({ clients[$0..<advance($0, splitSize, items.count)] })

Теперь, несмотря на подсказку кода, я не могу понять, как использовать эту функцию.

Любые примеры будут полезны, спасибо.

Я просмотрел примеры, но не могу понять, как использовать Это. Все, что я получаю от Apple Docs, ограничено.

Спасибо


person DogCoffee    schedule 25.08.2015    source источник
comment
шаг используется для генерации одного числа для внутренней функции, поэтому его нельзя просто использовать для объединения массивов, потому что вам нужны числа (начальные и конечные индексы) для этого   -  person maxpovver    schedule 25.08.2015
comment
@maxpovver, поэтому использовать его для этого - плохая идея stackoverflow.com/questions/26395766/   -  person DogCoffee    schedule 25.08.2015
comment
решать тебе @DogCoffee   -  person maxpovver    schedule 25.08.2015
comment
От других голова болит - я добавил свой подход KISS.   -  person DogCoffee    schedule 25.08.2015


Ответы (2)


Он немного изменился, вот новый синтаксис:

0.stride(to: 10, by: 2)

и

Array(0.stride(to: 10, by: 2)) // is [0, 2, 4, 6, 8]

если вы посмотрите здесь, вы увидите, какие типы соответствуют протоколу Strideable.

Как отметил @RichFox, в Swift 3.0 синтаксис вернулся к исходной форме глобальной функции, например:

stride(from:0, to: 10, by: 2)
person Dániel Nagy    schedule 25.08.2015
comment
Я не знал о SwiftDoc - бонус! Спасибо - person DogCoffee; 25.08.2015
comment
синтаксис теперь снова является глобальной функцией... stride(from:0, to: 10, by: 2) например, вы можете: for i in stride(from:0, to: 10, by: 2) { print(i) } - person Rich Fox; 26.09.2016
comment
let array = Array(1...10) или let array = Array(1..<10), @DánielNagy Я просто хочу узнать о преимуществах шага, когда мы можем использовать закрытые ярости и открытые диапазоны, как я упоминал здесь. - person abhimuralidharan; 30.06.2017
comment
@abhi1992 abhi1992 Я не проверял это раньше, но я думаю, что конструктор, который вы описали, был добавлен и в Swift 3. ИМО использование stride имеет смысл только в том случае, если вы не создаете последовательность с последовательными элементами, иначе я бы использовал Array(1...10), поскольку он короче. - person Dániel Nagy; 01.07.2017

Использование функции шага в Swift 4.2

12345
 2345
  345
   45
    5
    5
   45
  345
 2345
12345


for i in 1...5{
    for k in 1...i{
        print(terminator : " ")
    }
    for j in stride(from: i, to: 6, by: 1){
        print(j , terminator : "")
    }

    print(" ")
}
for i in stride(from: 5, to: 0, by: -1)
{
    for k in 1...i{
        print(terminator : " ")
    }
    for j in stride(from: i, to: 6, by: 1){
        print(j,terminator : "")
    }
    print(" ")
}
1 2 3 4 5
 2 3 4 5
  3 4 5
   4 5
    5
    5
   4 5
  3 4 5
 2 3 4 5
1 2 3 4 5
for i in 1...5{
    for k in 0...i{
        print(terminator : " ")
    }
    for j in stride(from: i, to: 6, by: 1){
        print(j , terminator : " ")
    }

    print(" ")
}

for i in stride(from: 6, to: 1, by: -1){
    for k in 1...i{
        print(terminator : " ")
    }
    for j in stride(from: i-1, to: 6, by: 1){
        print(j , terminator : " ")
    }

    print(" ")
}
person Ankur Purwar    schedule 12.11.2019