因为时间很短,所以内容不是很复杂,写一个有价值的小知识,主要是为了保持每日学习和写作的习惯,大作还是会写到相关的主题里面,尽量做到周更。敬请关注本人的主要作品集:
为了能够最大限度的保证文章的质量,日更主要采用翻译的方法来完成。本系列将主要翻译Kotlin官网的内容。具体的地址
https://kotlinlang.org/docs/home.html
九 控制流 - 条件表达式
像其他编程语言一样,Kotlin能够根据一段代码是否被计算为真来做出决定。这类代码称为条件表达式。Kotlin还能够创建循环并通过循环进行迭代。
条件表达式
Kotlin提供了检查条件表达式的if和when。
- if
若要使用if,请在括号()中添加条件表达式,并在大括号{}中添加结果为true时要执行的操作:
val d: Int
val check = true
if (check) {
d = 1
} else {
d = 2
}
println(d)
// 1
Kotlin中不存在三元运算符 ?:。但是,Kotlin中if可以用作表达式。使用if作为表达式时,可以没有大括号:
val a = 1
val b = 2
println(if (a > b) a else b) // Returns a value: 2
- when
当条件表达式具有多个分支时使用when。when既可以用作语句,也可以用作表达式。
以下是使用when作为语句的示例:
将条件表达式放在括号() 内,将要执行的操作放在大括号{} 内。
在每个分支中使用->可以将每个条件与每个操作分开。
val obj = "Hello"
when (obj) {
// Checks whether obj equals to "1"
"1" -> println("One")
// Checks whether obj equals to "Hello"
"Hello" -> println("Greeting")
// Default statement
else -> println("Unknown")
}
// Greeting
请注意,所有分支条件都会按顺序进行检查,直到其中一个条件得到满足为止。因此,只执行第一个合适的分支。
以下是使用when作为表达式的示例。将when语法立即分配给变量:
val obj = "Hello"
val result = when (obj) {
// If obj equals "1", sets result to "one"
"1" -> "One"
// If obj equals "Hello", sets result to "Greeting"
"Hello" -> "Greeting"
// Sets result to "Unknown" if no previous condition is satisfied
else -> "Unknown"
}
println(result)
// Greeting
如果将when用作表达式,则else分支是强制性的,除非编译器能够检测到分支条件涵盖了所有可能的情况。
前面的示例显示了when对于匹配变量非常有用。当您需要检查布尔表达式链时,when也很有用:
val temp = 18
val description = when {
// If temp < 0 is true, sets description to "very cold"
temp < 0 -> "very cold"
// If temp < 10 is true, sets description to "a bit cold"
temp < 10 -> "a bit cold"
// If temp < 20 is true, sets description to "warm"
temp < 20 -> "warm"
// Sets description to "hot" if no previous condition is satisfied
else -> "hot"
}
println(description)
// warm
译者注释:
- Kotlin总没有switch分支语句,而是使用when来代替
- Kotlin中的if/when 可以是一个表达式,意味着if/when表达式是一个值。这与Java的if/switch语句是不一样的
- Koltin中没有三元表达式 ? :