学过C语言的都知道,for循环的使用方法,标准的C-Type的for循环,格式如下:
for(int i = 0 ; i < 10; i++){
// 你需要做的操作
}
在OC中还有一个用于遍历集合的for-in循环,其格式为:
for (NSString *string in array) {
NSLog(@"%@",string);
}
那么,在swift中的for循环又是怎样的呢?
在swift中for循环变得更加强大灵活,写法上也有以上两种方式:
for var i = 0; i < 10; i += 1 {
}
for i in 0..<10 {
}
只不过,in关键字后可以跟一个区间,"..<"是不包含10的,"..."是包含10的;
但是,在最新的swift中,使用C-Type格式for循环时,Xcode会有警告:
提示我们改为for-in循环;
但是,for-in循环的步长是1,如果我们想每次循环加2怎么办呢?
这就用到了下面这个函数:
stride(to: <Int>, by: <Distance>)
调用者: 就是索引的开始数字,例如:0;
参数to: 就是最大数值,不包含此数值,例如:10;
参数by: 就是步长,每次改变的大小
for i in 0.stride(to: 10, by: 2) {
//
print(i)
}
这样控制台就会输出:
0
2
4
6
8
当然,如果需要包含最大的数值,可将函数的参数修改一下:
stride(through: <Int>, by: <Int>)
for i in 0.stride(through: 10, by: 2) {
print(i)
}
控制台会输出:
0
2
4
6
8
10
包含了最大的临界值10.
以上,都是从小到大递增的,能不能递减呢?
答案是可以的,只需要用最大的数值去调用stride方法,传入一个较小的结束参数,步长改为负数即可,例如:
for i in 10.stride(through: 0, by: -2) {
print(i)
}
控制台输出:
10
8
6
4
2
0
(完)