目录
2.4 程序的逻辑控制
程序的执行语句主要分为3种:顺序语句、条件语句和循环语句。顺序语句很好理解,就是代码一行一行地往下执行就可以了,但是这种“愣头青”的执行方式在很多情况下并不能满足我们的编程需求,这时就需要引入条件语句和循环语句了,下面我们逐个进行介绍。
2.4.1 if 条件语句
Kotlin 中的条件语句主要有两种实现方式:if 和 when。
首先学习 if,Kotlin 中的 if 语句和 Java 中的 if 语句几乎没有任何区别,因此这里我就简单举个例子带你快速了解一下。
还是以上一节中的 largerNumber() 函数为例,之前我们借助了 Kotlin 内置的 max() 函数来实现返回两个参数中的较大值,但其实这是没有必要的,因为使用 if 判断同样可以轻松地实现这 个功能。将 largerNumber() 函数的实现改成如下写法:
fun largerNubmer(num1:Int,num2:Int) : Int{
var value = 0;
if (num1>num2){
value = num1
} else {
value = num2
}
return value
}
这段代码相信不需要我多做解释,任何有编程基础的人都应该能看得懂。但是有一点我还是得说明一下,这里使用了 var 关键字来声明 value 这个变量,这是因为初始化的时候我们先将 value 赋值为 0,然后再将它赋值为两个参数中更大的那个数,这就涉及了重新赋值,因此必须用var 关键字才行。
到目前为止,Kotlin 中的 if 用法和 Java 中是完全一样的。但注意我前面说的是“几乎没有任何区别”。也就是说,它们还是存在不同之处的,那么接下来我们就着重看一下不同的地方。 Kotlin中的 if 语句相比于 Java 有一个额外的功能,它是可以有返回值的,返回值就是 if 语句每一个条件中最后一行代码的返回值。因此,上述代码就可以简化成如下形式:
fun largerNubmer(num1:Int,num2:Int):Int{
val value = if (num1>num2){
num1
} else {
num2
}
return value
}
注意这里的代码变化,if 语句使用每个条件的最后一行代码作为返回值,并将返回值赋值给了 value 变量。由于现在没有重新赋值的情况了,因此可以使用 val 关键字来声明 value 变量,最 终将 value 变量返回。
仔细观察上述代码,你会发现 value 其实也是一个多余的变量,我们可以直接将 if 语句返回, 这样代码将会变得更加精简,如下所示:
fun largerNubmer(num1:Int,num2:Int):Int{
return if (num1>num2){
num1
} else {
num2
}
}
到这里为止,你觉得代码足够精简了吗?确实还不错,但是我们还可以做得更好。回顾一下刚刚在上一节里学过的语法糖,当一个函数只有一行代码时,可以省略函数体部分,直接将这一 行代码使用等号串连在函数定义的尾部。虽然上述代码中的 largerNumber() 函数不止只有一 行代码,但是它和只有一行代码的作用是相同的,只是返回了一下 if 语句的返回值而已,符合该语法糖的使用条件。那么我们就可以将代码进一步精简:
fun largerNubmer(num1:Int,num2:Int) = if (num1>num2){
num1
} else {
num2
}
前面我之所以说这个语法糖非常重要,就是因为它除了可以应用于函数只有一行代码的情况, 还可以结合 Kotlin 的很多语法来使用,所以它的应用场景非常广泛。
当然,如果你愿意,还可以将上述代码再精简一下,直接压缩成一行代码:
fun largerNubmer(num1:Int,num2:Int) = if (num1>num2) num1 else num2
怎么样?通过一个简单的 if 语句,我们挖掘出了Kotlin 这么多好玩的语法特性,现在你应该能 逐渐体会到 Kotlin 的魅力了吧