什么样的类型在for循环中有范围?
本教程将介绍什么样的类型在for循环中有范围?的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。
问题描述
当我们编写以下内容时:
for i in 1...10 {
//do stuff
}
我想知道在函数调用中使用范围 1...10
的类型,例如:
myFunc(1...10)
推荐答案
如果你在定义let range = 1..<10
之后下一个断点,你会发现其实不是Range
结构,但评估一个 CountableRange
(或 CountableClosedRange
表示 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
协议,因此您只能像这样实现一个功能:
func printRange<R>(range: R) where R: RandomAccessCollection {
for i in range { print ("(i)") }
}
这篇文章关于 Swift 3 中的范围也可能有用.
好了关于什么样的类型在for循环中有范围?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。