在 Swift 2.0 中使用 Stride

Posted

技术标签:

【中文标题】在 Swift 2.0 中使用 Stride【英文标题】:Using Stride in Swift 2.0 【发布时间】: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 所以使用它是个坏主意***.com/questions/26395766/… 这取决于你@DogCoffee 其他人让我头疼 - 我已经添加了我的 KISS 方法。 【参考方案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),因为它更短。

以上是关于在 Swift 2.0 中使用 Stride的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 2.0 中使用完成按钮做数字键盘?

如何在 swift 2.0 中使用 catch 概念

Swift 2.0 异常处理

Swift 2.0 异常处理

如何在 swift 2.0 中使用 AttributesOfFileSystemForpaths 获取总磁盘空间和可用磁盘空间

如何在 Swift 2.0 中获取错误消息?