程序的逻辑控制
if条件语句
Kotlin中的if语句相比于Java有一个额外的功能,它是可以有返回值的,返回值就是if语句每一个条件中最后一行代码的返回值。
fun largerNumber(num1: Int, num2: Int): Int { var value = 0 if (num1 > num2) { value = num1 } else { value = num2 } return value } //Kotlin中的if语句相比于Java有一个额外的功能,它是可以有返回值的, // 返回值就是if语句每一个条件中最后一行代码的返回值。因此,上述代码就可以简化成如下形式: fun largerNumber2(num1: Int, num2: Int): Int { val value = if (num1 > num2) { num1 } else { num2 } return value } //if语句使用每个条件的最后一行代码作为返回值,并将返回值赋值给了value变量。 // 由于现在没有重新赋值的情况了,因此可以使用val关键字来声明value变量,最终将value变量返回。 //仔细观察上述代码,会发现value其实也是一个多余的变量,可以直接将if语句返回,这样代码将会变得更加精简,如下所示: fun largerNumber3(num1: Int, num2: Int): Int { return if (num1 > num2) { num1 } else { num2 } } //当一个函数只有一行代码时,可以省略函数体部分,直接将这一行代码使用等号串连在函数定义的尾部。 // 虽然上述代码中的largerNumber()函数不止只有一行代码,但是它和只有一行代码的作用是相同的, // 只是返回了一下if语句的返回值而已,符合该语法糖的使用条件。那么我们就可以将代码进一步精简: fun largerNumber4(num1: Int, num2: Int) = if (num1 > num2) { num1 } else { num2 } //还可以将上述代码再精简一下,直接压缩成一行代码: fun largerNumber5(num1: Int, num2: Int) = if (num1 > num2) num1 else num2
when条件语句
Kotlin中的when语句有点类似于Java中的switch语句,但它又远比switch语句强大得多。
when语句和if语句一样,也是可以有返回值的,因此我们仍然可以使用单行代码函数的语法糖。when语句允许传入一个任意类型的参数,然后可以在when的结构体中定义一系列的条件,格式是:匹配值 -> { 执行逻辑 }当执行逻辑只有一行代码时,{ }可以省略。
//if语句实现 fun getScore(name: String) = if (name == "Tom") { 86 } else if (name == "Jim") { 77 } else { 0 } //使用when语句的时候,现在我们将代码改成如下写法: fun getScore2(name: String) = when (name) { "Tom" -> 86 "Jim" -> 77 else -> 0 } //除了精确匹配之外,when语句还允许进行类型匹配 fun checkNumber(num: Number) { when (num) { is Int -> println("number is Int") is Double -> println("number is Double") else -> println("number not support") } } //is关键字就是类型匹配的核心,它相当于Java中的instanceof关键字。 //when语句还有一种不带参数的用法,虽然这种用法可能不太常用,但有的时候却能发挥很强的扩展性。 fun getScore3(name: String) = when { name == "Tom" -> 86 name == "Jim" -> 77 else -> 0 } //Kotlin中判断字符串或对象是否相等可以直接使用==关键字,而不用像Java那样调用equals()方法。 //可能会觉得这种无参数的when语句写起来比较冗余,但有些场景必须使用这种写法才能实现。举个例子 fun getScore4(name: String) = when { name.startsWith("Tom") -> 86 name == "Jim" -> 77 else -> 0 }
循环语句
Kotlin也提供了while循环和for循环,其中while循环不管是在语法还是使用技巧上都和Java中的while循环没有任何区别
Kotlin在for循环方面做了很大幅度的修改,Java中最常用的for-i循环在Kotlin中直接被舍弃了,而Java中另一种for-each循环则被Kotlin进行了大幅度的加强,变成了for-in循环
// 两端都是闭区间 val range = 0..10 // 左闭右开的区间 val range2 = 0 until 10 // step关键字 设置步长 val range3 = 0 until 10 step 2 // downTo关键字 降序的区间 val range4 = 10 downTo 1 for (i in range) { println(i) }
标签:语句,控制,逻辑,num1,num2,Int,Kotlin,when,name From: https://www.cnblogs.com/ooo0/p/17048607.html