31

我试图弄清楚如何在 Swift 中使用 Stride 功能。

自 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 获得的一切都是有限的。

谢谢

4

2 回答 2

67

它发生了一些变化,这是新的语法:

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)
于 2015-08-25T07:34:53.853 回答
1

swift 4.2中stride函数的使用

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(" ")
}
于 2019-11-12T05:11:09.930 回答