条件控制是每门编程语言中必不可少的,一般就是我们熟知的 if - else ,来作为我们代码逻辑选择条件控制。在 Java 中一般使用 if - else 和 switch - case 来作为条件控制,而在 Kotlin 中则是使用 if - else 和 when 来作为条件控制。
17.png
if 表达式
带返回值 if 表达式
在 Kotlin 中,if 是一个表达式所以它会返回一个值,表达式的值为表达式作用域内最后一行的值。这一点和 Java 是不同的,在 Java 中 if 仅仅是语句。
fun main() {
println("${maxOf(6,9)}")
println("${maxOf2(6,9)}")
}
fun maxOf(num1: Int,num2: Int):Int {
var value = 0
if (num1 > num2) {
value = num1
}else {
value = num2
}
return value
}
fun maxOf2(num1: Int,num2: Int):Int {
return if (num1 > num2) num1 else num2
}
if 表达式替代三目运算
Java 中的三目运算:
public int maxOf(int num1, int num2) {
return num1 > num2 ? a : b;
}
Kotlin 中的 if 表达式:
fun maxOf(num1: Int,num2: Int) = if (num1 > num2) num1 else num2
when 表达式
在 Kotlin 中使用 when 表达式代替了 Java 语言中的 switch - case 语句。
需求1:编写一个查询考试成绩的功能。
fun main() {
println("Kevin 的数学成绩:${getScore("Kevin")}")
}
fun getScore(name: String) = when (name){
"Kevin" -> 98
"Tom" -> 80
"David" -> 90
"Jack" -> 85
else -> 0
}
需求2:判断输入的数据是什么?
fun main() {
println("9F 是什么数字:${eval(9F)}")
}
fun eval(num: Number) : String = when (num){
is Int -> "this is int number"
is Double -> "this is double number"
is Float -> "this is float number"
is Long -> "this is long number"
is Byte -> "this is byte number"
is Short -> "this is short number"
else -> "invalid number"
}
when 表达式的增强
从 Kotlin 1.3 版本后对when 表达式做了一个写法上的优化:小括号中的条件可以动态赋值。
fun main() {
println("100F 是什么数字:${eval()}")
}
fun eval() : String {
return when (getValue()) {
is Int -> "this is int number"
is Double -> "this is double number"
is Float -> "this is float number"
is Long -> "this is long number"
is Byte -> "this is byte number"
is Short -> "this is short number"
else -> "invalid number"
}
}
// Any 类似 Java 中的 Object
fun getValue(): Any {
return 100F
}
网友评论