【Kotlin】初识Kotlin(二)
1、Kotlin的流程控制
流程控制是一门语言中最重要的部分之一,从最经典的if…else…,到之后的switch,再到循环控制的for循环和while循环,都是在开发中离不开的。
之前在第一篇博文中提到了Kotlin中的for循环和foreach循环,从中可以看出Kotlin在这些流程处理中下了很大一片功夫,也进行了人性化的创新。
接下来我们就从最经典的if … else …来讲起!
1. if表达式
说起if,我们已经非常熟悉了。也许它的执行效率却在某些情况下不是最高的,但是它的实用性绝对是最高的!
最传统的用法咱们不讲,咱们讲讲Kotlin中if创新的用法:
- if表达式当作三元运算符
- if块
(1) 代替三元运算符
Kotlin在操作符中,没有三元操作符case ? A : B
,但是我们仍然有替代方案,那就是Kotlin中的if (case) A else B
。在缺少三元操作符这一块上,Kotlin使用类似了python的方法,使用if ... else ...
来代替!
fun main() {
val flag = 1 == 2
println(if (flag) "true" else "false")
}
反正只要是三元运算符可以做的,if表达式可以做到!
(2) if块
块,就是代码块,也就是说if后面可以带上代码块,这是Java所做不到的
我们举一个例子
fun main() {
val a = -114
val b = -1919
val max = if (a > b) {
println("$a is larger than $b.")
println("max variable holds value of a.")
a
} else {
println("$b is larger than $a.")
println("max variable holds value of b.")
b
}
println("max = $max")
}
/*
-114 is larger than -1919.
max variable holds value of a.
max = -114
进程已结束,退出代码0
*/
我们发现,{}
内中的内容我们也执行了。注意的一点是,代码块中最后一行是返回值,这也是lambda的特性之一!
这里不得不提一句,每次在Java中写三元运算符的时候,总想写一些骚操作,比如在三元运算符的时候执行方法,但是偏篇不行,非得写成4行的if…else…,但是在Kotlin中,方法、代码块都能在if … else …中实行了,实在是太方便了!
上述的代码可以转换成这样的:
fun main() {
val a = -114
val b = -1919
val max = if (a > b) shutA(a,b) else shutB(a,b)
println("max = $max")
}
fun shutA(a: Int, b: Int): Int {
println("$a is larger than $b.")
println("max variable holds value of a.")
return a
}
fun shutB(a: Int, b: Int): Int {
println("$b is larger than $a.")
println("max variable holds value of b.")
return b
}
同样的,if块也可以使用if … else if … else …的方式
2. when表达式
这个可是Kotlin独有的表达式,可以说是switch的增强版,非常的实用!
在上一篇博文讲解for循环的例子中,我们就简单的使用了when表达式,现在我们来具体分析一下
我们举一个简单的when表达式的例子:
fun main() {
println("输入符号")
val result = when (val operator = readLine()) {
"+" -> 0
"-" -> 1
"*" -> 2
"/" -> 3
else -> -1
}
println("selected index = $result")
}
我们使用when来进行选择,()
内是选择的一个对象,这里选择的是我们在控制台写入的一行字符串
对应我们在控制台写入的不同的情况,会给reslut变量赋不同的值
再看一种不用when赋值的情况
fun main() {
val a = 12
val b = 5