什么类型的循环范围?

时间:2016-10-19 06:15:24

标签: ios swift range

当我们写下以下内容时:

AsyncTask<Void, Void, String> getAndroidAdIDtask = new AsyncTask<Void, Void, String>() {

        private Context mContext;

        public getAndroidAdIDtask (Context context){
            mContext = context;
        }

我想知道在函数调用中使用范围for i in 1...10 { //do stuff } 的类型是什么类型,例如:

1...10

3 个答案:

答案 0 :(得分:5)

如果在定义let range = 1..<10后放置断点,您会发现它实际上不是Range结构,而是评估CountableRange(或CountableClosedRange为0 ... 10)

文档:CountableRangeCountableClosedRange

功能:

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也可能有用。

答案 1 :(得分:0)

for i in 1...10 {
      print(i)
}

输出: 1 2 3 4 五 6 7 8 9 10

你的这个循环运行10次如果你用0开始然后你的循环运行11次。希望你从0和1开始清楚是什么不同

和ya,因为你问myfunc(1 ... 10)意味着

Range(1..<11)
  - startIndex : 1
  - endIndex : 11

答案 2 :(得分:0)

这些被称为范围(见这里 - https://developer.apple.com/reference/swift/range

所以myfunc将被声明为

func myfunc(range: Range)