阅读完需:约 4 分钟
if 表达式
在Kotlin中,if
表达式返回一个值。它用于控制程序结构的流程。 在Kotlin中有各种类型的if
表达式。
-
if-else
表达式 -
if-else if-else
阶梯表达式 - 嵌套
if
表达式
传统if
语句的语法
if(condation){
//code statement
}
传统if else
语句的语法 –
if(condation){
//code statement
}
else{
//code statement
}
Kotlin if-else表达式
fun main(args: Array<String>) {
val num1 = 10
val num2 =20
val result = if (num1 > num2) {
"$num1 is greater than $num2"
} else {
"$num1 is smaller than $num2"
}
println(result)
}
可以通过只在一个语句中写表达式来删除if-else
主体的花括号。
fun main(args: Array<String>) {
val num1 = 10
val num2 =20
val result = if (num1 > num2) "$num1 is greater than $num2" else "$num1 is smaller than $num2"
println(result)
}
在单行语句中使用if-else
表达式就像Java中的三元运算符一样。 Kotlin不支持任何三元运算符。
Kotlin if-else if-else阶梯表达式
fun main(args: Array<String>) {
val num = 10
val result = if (num > 0){
"$num is positive"
}else if(num < 0){
"$num is negative"
}else{
"$num is zero"
}
println(result)
}
Kotlin嵌套if表达式
fun main(args: Array<String>) {
val num1 = 25
val num2 = 20
val num3 = 30
val result = if (num1 > num2){
val max = if(num1 > num3){
num1
}else{
num3
}
"body of if "+max
}else if(num2 > num3){
"body of else if"+num2
}else{
"body of else "+num3
}
println("$result")
}
Kotlin 条件 if…in
fun main(args: Array<String>)
{
val x = 12
if (x in 1..8) {
println("x 在区间内")
} else {
println("不在区间内")
}
}
when 表达式
Kotlin when
表达式是一个返回值的条件表达式。 Kotlin when
表达式用于替换switch
语句。 Kotlin when
表达式相当于其他语言(Java,C++,C)中的switch
语句。
使用when作为表达式
fun main(args: Array<String>){
var number = 4
var numberProvided = when(number) {
1 -> "One"
2 -> "Two"
3 -> "Three"
4 -> "Four"
5 -> "Five"
else -> "invalid number"
}
println("You provide $numberProvided")
}
使用没有表达的when语句
使用when
时,表达式也不是必须要使用的,因为它可以像在其他语言中一样正常使用。
fun main(args: Array<String>){
var number = 4
when(number) {
1 -> println("One")
2 -> println("Two")
3 -> println("Three")
4 -> println("Four")
5 -> println("Five")
else -> println("invalid number")
}
}
when使用大括号的多重声明
可以使用条件块中包含的多个语句。
fun main(args: Array<String>){
var number = 1
when(number) {
1 -> {
println("Monday")
println("First day of the week")
}
7 -> println("Sunday")
else -> println("Other days")
}
}
when 多个分支
fun main(args: Array<String>){
var number = 8
when(number) {
3, 4, 5, 6 ->
println("It is summer season")
7, 8, 9 ->
println("It is rainy season")
10, 11 ->
println("It is autumn season")
12, 1, 2 ->
println("It is winter season")
else -> println("invalid input")
}
}
在范围内使用when
when
表达式还检查条件提供的输入范围。 使用..
(双点)运算符创建范围。 in
运算符用于检查值是否属于某个范围。
fun main(args: Array<String>){
var number = 7
when(number) {
in 1..5 -> println("Input is provided in the range 1 to 5")
in 6..10 -> println("Input is provided in the range 6 to 10")
else -> println("none of the above")
}
}
任意表达式作分支条件
when (x) {
parseInt(s) -> print("s encodes x")
else -> print("s does not encode x")
}
检测一个特定类型的值
检测一个值是(is)或者不是(!is)一个特定类型的值。注意: 由于智能转换,你可以访问该类型的方法和属性而无需任何额外的检测。
fun hasPrefix(x: Any) = when(x) {
is String -> x.startsWith("prefix")
else -> false
}
取代 if-else if链
when 也可以用来取代 if-else if链。 如果不提供参数,所有的分支条件都是简单的布尔表达式,而当一个分支的条件为真时则执行该分支:
when {
x.isOdd() -> print("x is odd")
x.isEven() -> print("x is even")
else -> print("x is funny")
}
try…catch 表达式
try…catch 表达式 和 java 的表达式基本一致。