Kotlin条件控制-When

作者: kevinLY | 来源:发表于2018-09-20 23:06 被阅读3次

谨以此记录自己的学习过程中感触较深的知识点!

When

when 会将它的参数和每个条件比较,直到找到一个合适的分支,否则会走默认分支(else)
when既可以被(1)、当做表达式使用;如果被当做表达式,符合条件的分支值就是这个表达式的值;(2)、也可以被当做语句使用。

(1)、当做表达式使用 [另:C、检测一个值是(is)或者不是(!is)一个特定类型的值]

fun test() {
        fun hasPrefix(x:Any) = when(x) {
            is String -> x.startsWith("prefix")
            else -> false
        }

        val x1 = hasPrefix(5)
        print(x1)                          ///false

        val x2 = hasPrefix("3")
        print(x2)                          ///false

        val x3 = hasPrefix("prefix123")
        print(x3)                          ///true


        val x = 1
        val s = "asas"
        val res = when {
            x in 1..10 -> "cheap"
            s.contains("hello") -> "it's a welcome!"
            else -> ""
        }

        print(res)    //cheap
}

(2)、语句使用

A:类似于Switch使用
        val x4 = 1;
        var x5 = 1;
        when(x4) {
            1 -> x5 = 2
            2 -> x5 = 2
            else -> {
                x5 = 5
            }
        }
        print(x5)  // 2

另一种写法:
        val x4 = 1;
        var x5 = 1;
        when(x4) {
            1,2 -> x5 = 2
            else -> {
                x5 = 5
            }
        }

        print(x5)  // 2

B:检测一个值在(in)或者不在(!in)一个区间或者集合中

        val x4 = 1;
        var x5 = 1;
        when(x4) {
            !in 3..4 -> x5 = 3
            in 1..2 -> x5 = 2
            else -> {
                x5 = 5
            }
        }

        print(x5) //3

C:检测一个值是(is)或者不是(!is)一个特定类型的值

D:when 也可以用来取代 if-else if链。 如果不提供参数,所有的分支条件都是简单的布尔表达式,
而当一个分支的条件为真时则执行该分支:

        fun isString(x:Any) = when(x) {
            x is String -> true
            else -> false
        }

        fun isInt(x:Any) = when(x) {
            x is Int -> true
            else -> false
        }

        when {
            isString("string") -> print("x is String")
            isInt("4") -> print("x is Int")
            else -> print("x is not String not Int")
        }

      // x is String

相关文章

  • 从零开始学Kotlin-控制语句(4)

    从零开始学Kotlin基础篇系列文章 条件控制-if 条件控制-when 循环控制-for 循环控制-while/...

  • Kotlin条件控制-When

    谨以此记录自己的学习过程中感触较深的知识点! When when 会将它的参数和每个条件比较,直到找到一个合适的分...

  • Kotlin学习笔记3

    Kotlin学习笔记3 1、条件控制if else ,when(类似switch) 2、循环控制for (item...

  • Kotlin基础知识(三):控制语句

    链接:Kotlin——初级篇(四):控制语句详解连接:控制流:if、when、for、while - Kotlin...

  • Kotlin学习之流程控制

    Kotlin学习之流程控制 @(Kotlin学习) Kotlin的流程控制,可以分为条件语句和循环语句。 一、条件...

  • Kotlin 类和对象(六)

    Kotlin 类和对象(六) 上一篇我们讲了Kotlin的循环还有条件控制Kotlin 循环和条件控制(五) ,这...

  • Kotlin 条件控制

    IF 表达式 一个 if 语句包含一个布尔表达式和一条或多条语句。 IF 表达式的结果赋值给一个变量。 区间 使用...

  • Kotlin 条件控制

    IF 表达式 一个 if 语句包含一个布尔表达式和一条或多条语句。它与在Java中的语法其实并没有什么区别。 下面...

  • Kotlin 条件控制

    原文地址:Kotlin 条件控制 1. IF 表达式 一个 if 语句包含一个布尔表达式和一条或多条语句。 我们也...

  • Kotlin 条件控制

    IF 表达式 When 表达式when 类似其他语言的 switch 操作符。其最简单的形式如下: 我们也可以检测...

网友评论

    本文标题:Kotlin条件控制-When

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