原文: https://www.programiz.com/kotlin-programming/if-expression

在本文中,您将借助示例学习在 Kotlin 中使用if表达式。

if...else的传统用法

if...else的语法是:

  1. if (testExpression) {
  2. // codes to run if testExpression is true
  3. }
  4. else {
  5. // codes to run if testExpression is false
  6. }

如果将testExpression求值为true,则if执行代码的特定部分。 它可以具有可选的else子句。 如果testExpression为假,则执行else子句中的代码。


示例:if...else的传统用法

  1. fun main(args: Array<String>) {
  2. val number = -10
  3. if (number > 0) {
  4. print("Positive number")
  5. } else {
  6. print("Negative number")
  7. }
  8. }

运行该程序时,输出为:

  1. Negative number

Kotlin if表达式

与 Java(以及其他许多编程语言)不同,if可以在 Kotlin 中用作表达式; 它返回一个值。 推荐阅读Kotlin 表达式


这是一个例子:

示例:Kotin if表达式

  1. fun main(args: Array<String>) {
  2. val number = -10
  3. val result = if (number > 0) {
  4. "Positive number"
  5. } else {
  6. "Negative number"
  7. }
  8. println(result)
  9. }

运行该程序时,输出为:

  1. Negative number

当使用if作为表达式时,else分支是必需的。


如果if的主体只有一个语句,则花括号是可选的。 例如,

  1. fun main(args: Array<String>) {
  2. val number = -10
  3. val result = if (number > 0) "Positive number" else "Negative number"
  4. println(result)
  5. }

这类似于 Java 中的三元运算符。因此,在 Kotlin 中没有三元运算符。


示例:具有多个表达式的if

如果if分支的块包含多个表达式,则最后一个表达式作为该块的值返回。

  1. fun main(args: Array<String>) {
  2. val a = -9
  3. val b = -11
  4. val max = if (a > b) {
  5. println("$a is larger than $b.")
  6. println("max variable holds value of a.")
  7. a
  8. } else {
  9. println("$b is larger than $a.")
  10. println("max variable holds value of b.")
  11. b
  12. }
  13. println("max = $max")
  14. }

运行该程序时,输出为:

  1. -9 is larger than -11.
  2. max variable holds value of a.
  3. max = -9

推荐阅读Kotlin when语句


Kotlin if..else..if阶梯

您可以使用if..else...if阶梯在 Kotlin 中的许多块中返回一个代码块。


例如:if..else..if阶梯

  1. fun main(args: Array<String>) {
  2. val number = 0
  3. val result = if (number > 0)
  4. "positive number"
  5. else if (number < 0)
  6. "negative number"
  7. else
  8. "zero"
  9. println("number is $result")
  10. }

该程序检查num是正数,负数还是零。


Kotlin 嵌套if表达式

一个if表达式可以位于另一个if表达式的嵌套块内。


示例:嵌套if表达式

该程序计算三个数字中最大的数字。

  1. fun main(args: Array<String>) {
  2. val n1 = 3
  3. val n2 = 5
  4. val n3 = -2
  5. val max = if (n1 > n2) {
  6. if (n1 > n3)
  7. n1
  8. else
  9. n3
  10. } else {
  11. if (n2 > n3)
  12. n2
  13. else
  14. n3
  15. }
  16. println("max = $max")
  17. }

运行该程序时,输出为:

  1. max = 5