Kotlin请开始你的表演

Kotlin请开始你的表演——03流程控制篇

2017-11-16  本文已影响3人  雷小歪

流程控制

1、if语句

基本用法在这里就不讲了,讲讲与Java不同的地方。

2、when语句

when语句的出现,纯粹是为了替代switch,并且提供更多的功能。我们依旧通过一个简单的例子来了解:

//通过数字值打印A-D字母
var num = 1
when(num){
    0 -> println("A")
    1 -> println("B")
    2 -> println("C")
    else -> println("D")
}

//结果:打印B

想必如果换成switch语句也是so easy.但是如果我们需要将对应的字母暂时先存储起来在之后使用,那么switch语句必定是需要在语句前定义一个变量,在case里为该变量赋值。而when就不必那么麻烦,因为它如if表达式一样也支持返回值和代码块:

3、for语句

Kotlin的for循环语句与Java想比精简了不少,通过下面例子大家体会下:

var arr = arrayOf(1,2,3,4,5)
//直接获取item
for (item in arr) {
    println(item)
}

//通过索引获取item
for (index in arr.indices) {
    println(arr[index])
}

//即获取对象,又获取索引
for ((index, item) in arr.withIndex()) {
    println("$index :: $item")
}

并且只要数据类型是支持迭代器的,那么都可以使用这种for语句进行遍历数据。

4、while和do...while语句

while与do...while语句与Java相同,就先一笔带过_

var arr = arrayOf(1, 2, 3, 4, 5)

var index = 0
while (index < arr.size) {
    println(arr[index])
    index++
}

var index2 = 0
do {
    println(arr[index2])
    index2++
} while (index2 < arr.size)

5、break\continue\return语句&标签跳转

这3条语句的基本用法以及语义在Kotlin中与其它语言一样:

break       :   结束最近的闭合循环
continue    :   跳到最近的闭合循环的下次循环
return      :   退出当前函数

我们还是来聊聊不同点,Kotlin中支持标签跳转(有点类似C语言的goto语句,但必须配合以上三条语句一起使用)。我们模拟一个三维数组,该数组中有3个数字88,而每个维度里只有一个数字88,让我们把这3个数的索引找出来:

//三维数组
var arr = arrayOf(
        arrayOf(arrayOf(1, 2, 3), arrayOf(1, 88, 3), arrayOf(1, 2, 3)),
        arrayOf(arrayOf(1, 2, 3), arrayOf(1, 2, 3), arrayOf(1, 88, 3)),
        arrayOf(arrayOf(1, 88, 3), arrayOf(1, 2, 3), arrayOf(1, 2, 3))
)

next@ for ((i, item) in arr.withIndex()) {
    for ((j, item2) in item.withIndex()) {
        for ((k, item3) in item2.withIndex()) {
            if (item3 == 88) {
                println("($i , $j , $k)")
                continue@next
            }
        }
    }
}

打印:
(0 , 1 , 1)
(1 , 2 , 1)
(2 , 0 , 1)

我们通过穷举来暴力查询这3个数,每当查到其中一个,就通过continue语句跳转到标签next@所在位置,并进行下次循环(当然如果我们使用break就会直接退出标签next@所在位置的for循环)。

return语句搭配标签的使用场景,多半是在嵌套函数和lambda表达式中使用,等到对应篇章时再细聊。

到此,Kotlin中流程控制相关的知识点也总结完毕,如有遗漏或错误,欢迎指正。

上一篇下一篇

猜你喜欢

热点阅读