当我们编写以下内容时:
for i in 1...10 {
//do stuff
}
我想知道什么类型的范围
1...10
在函数调用中使用它,例如:myFunc(1...10)
最佳答案
如果在定义let range = 1..<10
之后放置一个断点,您将看到它实际上不是Range
结构,而是对CountableRange
(或0 ... 10的CountableClosedRange
)进行评分。
文件:CountableRange,CountableClosedRange
功能:
func printRange(range: CountableRange<Int>) {
for i in range { print ("\(i)") }
}
func printRange(range: CountableClosedRange<Int>) {
for i in range { print ("\(i)") }
}
用法:
let range = 1..<10
printRange(range: range)
let closedRange = 1...10
printRange(range: closedRange)
通用函数:
由于两个结构都符合
RandomAccessCollection
协议,因此您只能实现一个这样的功能:func printRange<R>(range: R) where R: RandomAccessCollection {
for i in range { print ("\(i)") }
}
关于Swift 3中的范围的This article也可能有用。
关于ios - for循环的范围是哪种类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40123570/