kotlin的循环使用

4,355 阅读1分钟

1.For循环

在kotlin中也有for循环但是和我们在Java中的是用是不一样的 在Java我们最常见的使用:

Java代码
for(int i=0 ; i < list.size() ; i++){
//...
}

但是在kotlin中 这样使用时错误的 因为在kotlin中不能这样使用。 在kotlin中可以是用区间表达式来完成以上的功能 如下:

kotlin代码
for(i in 0..list.size){
//..
}
  
for(i in 0..10){
//..
}
for (i in 0 until 10){
//..
}

在这里  until 和 ".."  是不一样的
".."是包含判断值的,而until是不包含判断值的
for(i in 0..10){ 
print(i)
} 
打印结果 012345678910 (包含了 10)
for (i in 0 until 10){ 
print(i)
}
打印结果 0123456789 (不包含 10

这样就可以完成以上功能了 这是从0到list.size迭代。

注意:".."是包含判断值的,而until是不包含判断值的

在kotlin中不只可以从低到高的迭代也可以从高到低迭代 如下:

kotlin代码
for(i in 10 downTo 0){
//...
}

这段代码是从10 到0 的迭代 在kotlin中不只可以这样 还可以设置每次迭代的间隔 如下:

kotlin代码
for(i in 0..20 step 2){
    print(i)
}
打印结果为:02468101214161820

可以看出 每次迭代都加了2

在kotlin中还专门为我们提供了一个循环方法“repeat()” 使用方法如下:

  repeat(10){
    print(it)
}
打印结果:0123456789

这个方法提供了一个循环 通过查看源码发现这个方法你面实现是 一个for循环 源码如下:

public inline fun repeat(times: Int, action: (Int) -> Unit) {
contract { callsInPlace(action) }

for (index in 0 until times) {
    action(index)
}
}

可以看到这就是封装了一个for循环。

在kotlin中 for循环可以对任何提供了迭代器(iterator)的对象进行遍历,这相当于C#这样的语言中的foreach循环。语法如下:

for(item in collection) print(item)
或
for(item:Int in Ints){
//...
}

如上所述,for可以循环遍历任何提供了迭代器的对象。即:

- 有一个成员函数或扩展函数iterator(),它的返回类型; - 有一个成员函数或扩展函数next(); - 有一个成员函数或扩展函数hasNext()返回Boolean.

这三个函数都需要标记 operator

2.while 循环

在kotlin中 while循环和在Java中是一样的 如下:

while(x>0){
 x--
}

do{
y++
}while(y>10)