什么样的类型在for循环中有范围?

本教程将介绍什么样的类型在for循环中有范围?的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

什么样的类型在for循环中有范围? 教程 第1张

问题描述

当我们编写以下内容时:

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循环中有范围?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。