目录
条件控制是每门编程语言中必不可少的,一般就是使用我们所熟知的if-else,来作为我们代码逻辑选择条件控制。在Java中,一般我们是用if-else,swicth-case来作为条件控制,而在Kotlin中,是没有swicth-case的,使用if-else和when。
一、if-else
1、if表达式
在kotlin中,if是一个表达式所以它会返回一个值,表达式的值作为表达式作用域的最后一行返回,这一点和java不同,在java中,if仅仅代表条件控制语句,而在kotlin中,if不仅是语句。
fun main() {
println("max:${max(1,3)}")
}
fun max(a:Int,b:Int):Int{
return if(a>b) a else b
}
max:3
2、if表达式替代三目运算符
因为在kotlin中,if都是带有返回值的,因此kotlin是不需要三目运算符的(xxx?x:x),因为if表达式都能做到。
3、if多级嵌套
fun main() {
eval(3)
}
fun eval(number: Number):Unit{
if(number is Int){
println("number is Int")
}else if(number is Double){
println("number is Double")
}else if(number is Float){
println("number is Float")
}else if(number is Long){
println("number is Long")
}else if(number is Short){
println("number is Short")
}else if(number is Byte){
println("number is Byte")
}else
println(IllegalArgumentException("invalid number"))
}
number is Int
二、when
1、when表达式
在kotlin中,when表达式替代了类似C语言,Java语言的swicth-case语句。也是有返回值的,其中最简单的形式如下
fun main() {
eval(3f)
}
fun eval(number: Number):Unit{
when (number) {
is Int -> {
println("number is Int")
}
is Double -> {
println("number is Double")
}
is Float -> {
println("number is Float")
}
is Long -> {
println("number is Long")
}
is Short -> {
println("number is Short")
}
is Byte -> {
println("number is Byte")
}
else -> println(IllegalArgumentException("invalid number"))
}
}
number is Float
2、when表达式增强版
自从Kotlin1.3版本后对when做了一个写法上的优化,也就是when()的参数可以动态赋值。
fun main() {
eval3()
}
fun eval3():Unit{
when (val v = getValue()) {
is Int -> {
println("number is Int")
}
is Double -> {
println("number is Double")
}
is Float -> {
println("number is Float")
}
is Long -> {
println("number is Long")
}
is Short -> {
println("number is Short")
}
is Byte -> {
println("number is Byte")
}
else -> println(IllegalArgumentException("invalid number"))
}
}
fun getValue():Any{
return 100
}
number is Int