【问题标题】:Using Stride in Swift 2.0在 Swift 2.0 中使用 Stride
【发布时间】:2015-11-18 18:13:03
【问题描述】:

我正在尝试弄清楚如何在 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)] })

现在,尽管有代码提示,但我无法弄清楚如何使用此功能。

任何示例都会有所帮助,谢谢。

我看过examples,但我无法掌握如何使用它。我从 Apple Docs 中得到的东西是有限的。

谢谢

【问题讨论】:

  • stride 是用来为内部函数生成一个数字的,所以它不能简单地用于拼接数组,因为你需要数字(开始和结束索引)
  • @maxpovver 所以使用它是个坏主意stackoverflow.com/questions/26395766/…
  • 这取决于你@DogCoffee
  • 其他人让我头疼 - 我已经添加了我的 KISS 方法。

标签: swift sequence stride


【解决方案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(" ")
}

【讨论】:

    【解决方案2】:

    有点变化,这是新的语法:

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

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

    如果您查看here,您可以看到哪些类型符合Strideable 协议。

    正如@RichFox 所指出的,在 Swift 3.0 中,语法改回原来的全局函数形式,例如:

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

    【讨论】:

    • 我不知道 SwiftDoc - 奖金!谢谢
    • 语法现在再次成为全局函数...stride(from:0, to: 10, by: 2) 例如你可以:for i in stride(from:0, to: 10, by: 2) { print(i) }
    • @abhi1992 我之前没有检查过,但我认为你描述的构造函数也是在 Swift 3 中添加的。 IMO 使用 stride 仅在您不创建包含连续元素的序列时才有意义,否则我会使用 Array(1...10),因为它更短。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多