在 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 中使用 AttributesOfFileSystemForpaths 获取总磁盘空间和可用磁盘空间