条件语句:if和when

QuibblerQuibbler 2020-06-07 约 5 分钟 1680 次阅读

条件语句:if和when

kotlin有两种条件语句一种是熟知的if条件语句,另一种是新颖的when条件语句。开发过程中更推荐使用when替代层层if判断,代码会更简洁。

1、if

if条件参数类型为布尔类型,只有true和false两种。

if (条件) {
        //
    }

if...else...常见的

if (condition1) {
        //
    }else {
        //
    }

可以简写成:

if (condition) a else b

可以多重嵌套if...else if...else...语句

if (condition1) {
        //
    } else if (condition2) {
        //
    } else {
        //
    }

条件判断除了简单的直接用Boolean条件,还能使用关键字 in 判断值是否在指定区间或者数组集合中。

var array = arrayOf(1, 2, 34, 4)
    if (2 in array) {
        //如果2在数组array中
    }

if直接返回值

val result = if (isRight) {
        0
    } else {
        1
    }

而不必像下面那样:

if(isRight){
    	result = 0
    }else{
    	result = 1
    }

2、when

when语句类似于Java中的switch语句。但是比Java中的switch要强大的多,switch判断的参数只能是枚举常量、字符串或者数字字面值。Kotlin中的when可以传入任何参数用来判断。

2.1、带参数的when

when(值){...}:值和哪个分支匹配则执行哪个分支,其中else的作用相当于Java中switch的default分支兜底。

例:

var value = 2
    when (value) {
        1 -> println(1)
        2 -> println(2)
        else -> println("")
    }

除了常量还可以使用任意对象作为判断参数,比如枚举组合,枚举相关Kotlin语法见枚举。

例:

fun mixColor(c1: COLOR, c2: COLOR) = {
    when (setOf(c1, c2)) {
        setOf(COLOR.RED, COLOR.ORANGE) -> ""
        setOf(COLOR.GREEN, COLOR.ORANGE) -> ""
        setOf(COLOR.RED, COLOR.BLUE) -> ""
        setOf(COLOR.VIOLET, COLOR.YELLOW) -> ""
        else -> "?"
    }
}

enum class COLOR(val red: Int, val green: Int, val blue: Int) {
    RED(255, 0, 0), ORANGE(255, 1165, 0), YELLOW(255, 255, 0),
    GREEN(0, 255, 0), BLUE(0, 0, 255), VIOLET(238, 130, 238)
}

每个条件判断不一定非得是固定的值,也可以判断是否在一个区间内。关于区间参考区间 ..

例:

var value = 2
    when (value) {
        in 2..10 -> println(2) //如果value只在2~10之间则执行该分支
        else -> println("")
    }

2.2、不带参数的when

when{...}:不提供参数,所有的分支条件都是简单的布尔表达式

例:

when {
        false -> println("false")
        true -> println("true")
        else -> println("other?")
    }

有了上面的例子就可以发散思维:

fun isEqual(c1: COLOR, c2: COLOR) = {
    when {
        c1 == c2 -> "true"
        c1 != c2 -> "false"
        else -> "?"
    }
}

学习资料:

        Kotlin 条件控制

相关推荐

Parcelize:Parcelable 实现生成器
Kotlin

Parcelize:Parcelable 实现生成器

Parcelize:Parcelable 实现生成器Parcelable是安卓开发中常用的序列化方式,之前分享过一个Parcelable序列化插件,方便开发者快速生成代码,提高开发效率。1、Parcelize插件Kotlin官方也推出一个Parcelable自动生成的Gradle插件:Parcelize。1.1、引入插件在项目的build.gradle中添加:id("kotlin-parceliz

2.6k
Kotlin的继承
Kotlin

Kotlin的继承

Kotlin的继承1、超类:Any类似于Java中的Object类,Kotlin也有一个叫Any的超类,是所有类的父类,所有类都默认继承自该类。超类的定义如下,其中定义了三个函数:2、open注意上面的Any类用open修饰,表示该类可以被继承。Kotlin中的类默认都是final的,无法被继承:如果想让类可以被继承,就需要用在定义类的地方用open关键字标识该类可以被继承。3、构造器继承中涉及到

2.1k
 Kotlin基本语法
Kotlin

Kotlin基本语法

Kotlin基本语法了解Kotlin语言的基本语法。1、包kotlin文件以.kt结尾,编译文件还是如此只不过在文件名后面加上Kt后缀。这一点和Java不同,Java源文件.java,编译后为.class文件。1.1、包定义每个kotlin文件的第一行就用关键字package定义该文件所在的包。例:1.2、导包用到其它kotlin文件需要使用关键字import导入,这一点和Java一样。kotli

2.1k