kotlin基础条件控制when(代码片段)

superxuezhazha superxuezhazha     2023-05-05     685

关键词:

When 表达式

when 将它的参数和所有的分支条件顺序比较,直到某个分支满足条件。

when 既可以被当做表达式使用也可以被当做语句使用。如果它被当做表达式,符合条件的分支的值就是整个表达式的值,如果当做语句使用, 则忽略个别分支的值。

when 类似其他语言的 switch 操作符。其最简单的形式如下:

when (x) 
    1 -> print("x == 1")
    2 -> print("x == 2")
    else ->  // 注意这个块
        print("x 不是 1 ,也不是 2")
    

 

在 when 中,else 同 switch 的 default。如果其他分支都不满足条件将会求值 else 分支。

如果很多分支需要用相同的方式处理,则可以把多个分支条件放在一起,用逗号分隔:

when (x) 
    0, 1 -> print("x == 0 or x == 1")
    else -> print("otherwise")

 

我们也可以检测一个值在(in)或者不在(!in)一个区间或者集合中:

when (x) 
    in 1..10 -> print("x is in the range")
    in validNumbers -> print("x is valid")
    !in 10..20 -> print("x is outside the range")
    else -> print("none of the above")

 

另一种可能性是检测一个值是(is)或者不是(!is)一个特定类型的值。注意: 由于智能转换,你可以访问该类型的方法和属性而无需 任何额外的检测。

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

 

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

when 
    x.isOdd() -> print("x is odd")
    x.isEven() -> print("x is even")
    else -> print("x is funny")

 

实例

fun main(args: Array<String>) 
    var x = 0
    when (x) 
        0, 1 -> println("x == 0 or x == 1")
        else -> println("otherwise")
    

    when (x) 
        1 -> println("x == 1")
        2 -> println("x == 2")
        else ->  // 注意这个块
            println("x 不是 1 ,也不是 2")
        
    

    when (x) 
        in 0..10 -> println("x 在该区间范围内")
        else -> println("x 不在该区间范围内")
    

 

输出结果:

x == 0 or x == 1
x 不是 1 ,也不是 2
x 在该区间范围内

when 中使用 in 运算符来判断集合内是否包含某实例:

fun main(args: Array<String>) 
    val items = setOf("apple", "banana", "kiwi")
    when 
        "orange" in items -> println("juicy")
        "apple" in items -> println("apple is fine too")
    

 

输出结果:

apple is fine too

kotlin条件循环控制使用(代码片段)

一.if条件语句在kotlin中,if语句本身就是表达式,有返回值,kotiln并不像java一样会提高三元操作符(condition?then:else),eg: funtestIf()vara:Int=20varb=30varmax=if(a<b)aelsebprintln("max")varmin=if(a<b)println("Choosea:&... 查看详情

kotlin实战——kotlin基础(代码片段)

文章目录1.基本要素:函数和变量1.1函数1.2变量1.3更简单的字符串格式化:字符串模板2.类和属性2.1属性2.2自定义访问器3.表示和处理选择:枚举和“when”3.1声明枚举类3.2使用“when”处理枚举类3.3在“when”结构中使用... 查看详情

kotlin实战——kotlin基础(代码片段)

...间和数列4.3迭代map4.4使用“in”检查集合和区间的成员5.Kotlin中的异常5.1“try”“catch”和“finally”5.2“try”作为表达式1.基本要素:函数和变量1.1函数首先我们来定义一个无返回值的函数funmain(args:Array<String>)println("Hel... 查看详情

kotlin小笔记kotlin的基本语法(代码片段)

本文目录kotlin学习-基本语法1.简介2.运行3.逻辑控制1.if条件语句2.when条件语句循环语句4.面向对象5.接口6.可见修饰符7.数据类8.单例类kotlin学习-基本语法1.简介对比java1.语法简洁,代码量少2.语法高级3.语言安全性。杜绝空指针... 查看详情

kotlin基础学习(代码片段)

学!原文:https://blog.csdn.net/CrazyApes/article/details/122091459文章目录Kotlin线上编写变量lateinit延迟初始化空安全比较==,===,equalsfor循环when[Dataclasses](https://kotlinlang.o 查看详情

kotlin入门到精通(实战)-流程控制whenifloop

<<<返回总目录本章目录一、条件判断1、when精讲1.1、when的基本语法1.2、枚举类对象作为when参数1.3、任意对象作为when参数1.4、无参数的when表达式1.5、智能类型转换(smart-casts)1.6、when原理分析1.7、whenfallthrough1.8、when的程序健... 查看详情

kotlin条件循环控制使用(代码片段)

一.if条件语句在kotlin中,if语句本身就是表达式,有返回值,kotiln并不像java一样会提高三元操作符(condition?then:else),eg: funtestIf()vara:Int=20varb=30varmax=if(a<b)aelsebprintln("max")varmin= 查看详情

kotlin条件循环控制使用(代码片段)

一.if条件语句在kotlin中,if语句本身就是表达式,有返回值,kotiln并不像java一样会提高三元操作符(condition?then:else),eg: funtestIf()vara:Int=20varb=30varmax=if(a<b)aelsebprintln("max")varmin= 查看详情

从零开始学kotlin-控制语句

从零开始学Kotlin基础篇系列文章条件控制-ifvara=10varb=20if(a>b)print(a)if(a>b){print(a)}else{print(b)}valmax=if(a>b)aelsebif(ain1..10){print("a在1到10区间内")}条件控制-whenvalx=3when(x){1->print("x是1")2->print(" 查看详情

kotlin入门知识点总结常量,条件语句,string,方法,unit函数和nothing函数(代码片段)

...量2.条件语句2.1if/else2.2range2.3when3.String4.方法4.1默认传参4.kotlin字节码5.Unit函数6.Nothing参考材料从VIP课程2021-4-2kotlin专题,适合有java基础的人直接百度搜索码牛学院就可以找到1.变量常量和类型kotlin中,变量的定义是 查看详情

java和kotlin的比较:switch与when(代码片段)

数字java代码:intscore=8//定义分数;Stringgrade;switch(score)case10:case9:grade="Excellent";break< 查看详情

kotlinkotlin的基本语法(代码片段)

本文目录kotlin学习-基本语法1.简介2.运行3.逻辑控制1.if条件语句2.when条件语句循环语句4.面向对象5.接口6.可见修饰符7.数据类8.单例类kotlin学习-基本语法1.简介对比java1.语法简洁,代码量少2.语法高级3.语言安全性。杜绝空指针... 查看详情

kotlin学习笔记-----流程控制(代码片段)

条件控制if条件判断if的使用和java里面一样//Java中的ifintscore=90;if(score>=90&&score<=100)System.out.println("优秀");elseif(score>=80&&score<=89)System.out.println("良好");elseif(score>=60 查看详情

组合多个是在kotlin的when子句中(代码片段)

假设我有以下内容:funmakeSound(valanimal:Animal)=when(animal)isLion->animal.roar()isTRex->animal.roar()isCow->animal.moo()通常我只需添加一个RoaringAnimal界面并询问isRoaringAnimal就可以简化这一过程。但有没有另一种方法将多个is条款合并为一个... 查看详情

android:kotlin详细入门学习指南-包-控制流-返回与跳转-基础语法(代码片段)

本人也是在初学Kotlin,如有错误,请帮忙指出,持续更新Android:Kotlin详细入门学习指南-包-控制流-返回与跳转-基础语法(三)建议先看看前面的文章Android:Kotlin详细入门学习指南-基础语法(一)Android:Kotlin详... 查看详情

控制流(代码片段)

条件语句packageloadermanfunmain(arg:Array<String>)vara:Int=30varb=34varmax:Intif(a>b)//普通用法max=aelsemax=bprint("max"+max)varx=if(a>b)//将if语句作为表达式使用a//返回值elseb//返回值print("x="+x) when语句packageloadermanfunmain(arg:Array<String>)varx... 查看详情

kotlin基础语法(代码片段)

基础语法:定义函数、定义变量、常量、使用条件表达式importjava.lang.Integer.parseInt//①定义函数//一个函数接受两个int型参数,返回值为int:funsum1(a:Int,b:Int):Intreturna+b//该函数只有一个表达式函数体以及一个自推导型... 查看详情

kotlin控制流

Kotlin中的控制流用于流程控制的表达式如if、when、for、whileIf表达式Kotlin中,if是一个表达式,它会返回一个值。它可以用来替代三元运算符(条件?然后:否则)ifvar a = 1var b = 2var max = aif(b >&... 查看详情