流程控制:循环语句

Kotlin 中的循环语句有 for 和 while 两个,可是由于 Kotlin 做为一种更现代的语言,提供了更加方便的函数式编程方法,使用流式 API 处理之前须要用循环的地方会更加简洁,因此建议你们在可以使用流式 API 的地方尽可能不要使用循环语句。java

1. for 循环语句

Kotlin 中的 for 循环抛弃了类 C 语言中的三段式参数,这种写循环的方式有几个弊端:算法

  1. 很是容易在边界问题上出错(这也是学校考试的重点);编程

  2. 为指定循环次数引入没必要要的参数(大名鼎鼎的 i);数组

  3. 写法臃肿不堪。app

Kotlin 为解决这个问题,对 for 循环进行了改革:它规定,全部的 for 循环都使用 遍历元素 in 遍历对象 肯定遍历的方式,这里的“遍历对象”能够是 区间、数组、集合 和其余任何提供了 iterator 迭代器的对象。ide

首先咱们看一下数组和集合,咱们能够直接使用 for 循环遍历它们中的元素:函数式编程

val arrayInt = intArrayOf(1, 2, 3, 4, 5)for (item in arrayInt) {

  println("$item")}

第二行里的 item 就是 arrayInt 数组中的元素。函数

若是须要遍历数组或集合的索引,可使用数组和集合的 indices 属性:spa

for (i in arrayInt.indices) {

  println("arrayInt[$i] is ${arrayInt[i]}")}

若是须要遍历数组和集合的索引和值,可使用库函数里的 withIndex() 方法,它返回一个 IndexedValue 对象,咱们经过 解构声明 能够同时获取索引和值:orm

for ((index, value) in arrayInt.withIndex()) {

  println("arrayInt[$index] is $value")}

上面三个 for 循环语句使用了不一样的遍历对象,但输出了相同的结果,让咱们能够经过不一样的方法灵活地遍历数组和集合。

区间 是 Kotlin 加入的一种新的数据形式,它的构成是 较小元素 .. 较大元素,这里的“..”操做符重载了 rangeTo() 函数。

只要是实现了 Compare 接口的类型,都能使用区间,可是咱们通常用的比较多的是 整数区间,并且只有整数区间才能用做 for 循环中的迭代

for (i in 1..5) println(i) //输出 1 到 5 的数字

若是想倒序循环,可使用 downTo() 函数,通常写成中缀的形式:

for (i in 5 downTo 1) println(i) //输出 5 到 1 的数字

特定步长可使用 step() 函数,通常也写成中缀的形式:

for (i in 5 downTo 1 step 3) println(i) //输出 5 2for (i in 1..5 step 2) println(i) //输出 1 3 5

注意,这里的步长只能是 整数

2. while 语句

与 Java 彻底相同。(除了算法,谁会用它)

相关文章
相关标签/搜索