当我们写下以下内容时:
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
答案 0 :(得分:5)
如果在定义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中的范围的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)