Kotlin 分支

作者: ChenME | 来源:发表于2018-07-26 14:26 被阅读18次

Kotlin 分支


1. if 分支表达式

在 Kotlin 中,由于没有了三目运算符(?:),所以就有了分支表达式,其效果可以替代三目运算符,甚至效果会更优

下面举个例子:
在程序开发中,一般分为开发环境、测试环境、正式环境,在这3个环境中会对应3个不同的接口地址,下面来模拟一下:

const val ENVIRONMENT_DEV = 2 // 开发环境
const val ENVIRONMENT_TEST = 1 // 测试环境
const val ENVIRONMENT_ONLINE = 0 // 正式环境

val projectEnvironment = ENVIRONMENT_DEV

val PATH_HOST = if (ENVIRONMENT_ONLINE == projectEnvironment) {
    "http://api.online.com"
} else if (ENVIRONMENT_TEST == projectEnvironment) {
    "http://api.test.com"
} else {
    "http://api.dev.com"
}

// http://api.dev.com
  • 在 Java 中运用三目运算符,同样也可以实现,但是看起来就没那么直观了
final String PATH_HOST = ENVIRONMENT_ONLINE == projectEnvironment ?
        "http://api.online.com" :
        (ENVIRONMENT_TEST == projectEnvironment ?
                "http://api.test.com" :
                "http://api.dev.com");
  • 又或者是使用 if else if else 判断,但是,这样做了就没法将变量用 final 修饰了。

2. when 分支语句(表达式)

  • 在 Kotlin 中,已经不支持 switch 语句了,除了 switch 支持的判断类型不丰富外(char, byte, int, Character, Byte, Short, Integer, String, enum (JDK1.7)),还有就是使用起来比较繁琐,例如每个分支结束后都要使用 break 做中断等;取而代之的是 when,下面一段示例代码:
  1. 分支语句
val number1 = 10
val number2 = 10
when (number1) {
    is Int -> println("$number1 是一个 Int")
    number2 -> println("$number1 与 number2 的值相等")
    in 1..100 -> println("$number1 在 [1,100]")
    !in 1..100 -> println("$number1 不在 [1,100]")
    else -> println("以上条件都不满足!")
} // 10 是一个 Int
  • 投过运行结果可知,当程序执行到符合条件的位置,会自动结束。
  1. when 不仅限于语句,它也可以用到表达是上面:
  • 还拿开发环境的例子来说,也可以用 when 表达式实现
val PATH_HOST = when (projectEnvironment) {
    ENVIRONMENT_DEV -> "http://api.online.com"
    ENVIRONMENT_TEST -> "http://api.test.com"
    else -> "http://api.dev.com"
}

相关文章

网友评论

    本文标题:Kotlin 分支

    本文链接:https://www.haomeiwen.com/subject/ferbmftx.html