什么类型的循环范围? [英] What kind of type have the range in for loop?
问题描述
当我们写下以下内容时:
When we write the following:
for i in 1...10 {
//do stuff
}
我想知道范围 1的类型。 ..10
在函数调用中使用它,例如:
I want know what type have the range 1...10
to use it in function call for example:
myFunc(1...10)
推荐答案
如果在定义<$ c后放置断点$ c> let range = 1 ..< 10 ,你会看到它实际上不是 Range
结构,但是rater a CountableRange
(或 CountableClosedRange
0 ... 10)
If you put a breakpoint after defining let range = 1..<10
, you will see that it's actually not a Range
structure, but rater a CountableRange
(or CountableClosedRange
for 0...10)
文档: 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
协议,你只能实现这样的一个函数:
Since both structs conform to RandomAccessCollection
protocol, you can implement only one function like this:
func printRange<R>(range: R) where R: RandomAccessCollection {
for i in range { print ("\(i)") }
}
这篇文章关于Swift 3中的范围也可能有用。
This article about ranges in Swift 3 may also be useful.
这篇关于什么类型的循环范围?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!