Kotlin编程条件控制示例详解

目录
  • 本文总览
  • 1. When 表达式
  • 2. If 表达式
  • 总结

本文总览

本篇来看看 Kotlin的条件控制,这一节知识点 建议与Java中的条件结构类比,会很好理解并记住。

1. When 表达式

在 Kotlin 用 when 来定义多个分支的条件表达式。Kotlin中这个语法与 java 中的 switch 语句非常类似。代码块的执行就是将参数与所有的分⽀条件顺序⽐较,直到满⾜某个分⽀条件:(示例 )

when (x) {
    1 -> print("x == 1")
    2 -> print("x == 2")
    else -> {
        print("x is neither 1 nor 2")
    }
}

以上示例中,如果都不满足确切值的分支,将会执行 else 分支。

when 如果作为⼀个表达式使⽤, 常规情况是必须有 else 分⽀的。 但也有以下特例:

// 一个枚举对象
enum class Bit {
    ZERO, ONE
} 

val numericValue = when (getRandomBit()) {
    Bit.ZERO -> 0
    Bit.ONE -> 1
    // 'else' ...
}

上面示例说明:编译器能够检测出所有的可能情况都已经覆盖,这种情况 是可以没有 else 分支的。

when 语句的分⽀条件可以⽤任意表达式(⽽不只是常量)来表示:

when (x) {
    s.toInt() -> print("s encodes x")
    else -> print("s does not encode x")
}

when 语句还可以用于检测⼀个值在( 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")
}

从以上这些特性可知,when 是可以⽤来取代 if - else条件表达式的。

2. If 表达式

在 Kotlin 中, if 是⼀个表达式:会返回⼀个值。这样其实就不需要三元运算法:( 条件 ? 然后 : 否则 ),if 就可以担任同样的角色

val c = if (condition) a else b

使用 in 运算符来检测某个数字是否在指定区间内,区间格式为 x..y :

fun main() {
    val x = 5
    val y = 9
    if (x in 1..8) {
        println("x 在区间内")
    }
}

若将if用作表达式,例如,用于返回其值或将其分配给变量,则else分支是强制性的。

if 表达式的分⽀可以是代码块:

val max = if (a > b) {
    print("Choose a")
    a
} else {
    print("Choose b")
    b
}

在Kotlin中,常用的 if 表达式

  • if表达式
  • if..else表达式
  • if..else if..else表达式
  • 嵌套表达式

总结

本篇学习 kotlin 的 when表达式 和 if表达式,它与 Java 中 switch语句, if语句有这异曲同工之处。when 表达式和if 表达式常见使用方式,对以后的项目中逻辑处理有很大帮助

以上就是Kotlin编程条件控制示例详解的详细内容,更多关于Kotlin 条件控制的资料请关注我们其它相关文章!

(0)

相关推荐

  • Kotlin中协程的创建过程详析

    目录 为什么需要协程? 创建并启动协程 协程的执行过程 suspend block 是如何变为协程体被执行的? 总结 总结 为什么需要协程? 协程可以简化异步编程,可以顺序地表达程序,协程也提供了一种避免阻塞线程并用更廉价.更可控的操作替代线程阻塞的方法 – 挂起函数. Kotlin 的协程是依靠编译器实现的, 并不需要操作系统和硬件的支持.编译器为了让开发者编写代码更简单方便, 提供了一些关键字(例如suspend), 并在内部自动生成了一些支持型的代码. 创建并启动协程 fun create

  • 一文读懂Android Kotlin的数据流

    目录 一.Android分层架构 二.ViewModel + LiveData 2.1 LiveData 特性 观察者的回调永远发生在主线程 仅持有单个且最新数据 自动取消订阅 提供「可读可写」和「仅可读」两种方式 配合 DataBinding 实现「双向绑定」 2.2 LiveData的缺陷 value 可以是 nullable 的 传入正确的 lifecycleOwner 粘性事件 默认不防抖 transformation 工作在主线程 2.3 LiveData 小结 三.Flow 3.1

  • Kotlin与Java相互调用的完整实例

    目录 一.Kotlin 调用 Java 二.Java 调用 Kotlin 附 Github 源码: 总结 一.Kotlin 调用 Java 1. kotlin 关键字转义 java 中的方法或变量 是 kotlin 的关键字时,使用反引号 `` 对关键字进行转义 // java public class JavaDemo { String is; public String getIs() { return is; } public void setIs(String is) { this.is

  • Kotlin协程launch原理详解

    目录 正文 launch使用 launch原理 CoroutineStart中找invoke方法 startCoroutineCancellable逻辑 小结 正文 launch我们经常用,今天来看看它是什么原理. 建议: 食用本篇文章之前记得先食用Kotlin协程之createCoroutine和startCoroutine launch使用 launch我们应该很熟悉了,随便举个例子: fun main() { val coroutineScope = CoroutineScope(Job(

  • Kotlin与Java的区别详解

    什么是Kotlin? Kotlin是一种可以在 Java 虚拟机 (JVM) 上运行的开源编程语言.该语言可以在许多平台上运行. 它是一种将面向对象编程 (OOP) 和函数式编程结合在一个不受限制.自给自足且与众不同的平台中的语言. 什么是Java? Java 是一种多平台.面向对象.以网络为中心的编程语言.它是最常用的编程语言之一.它也用作计算平台,最早由 Sun Microsystem 于 1995 年发布,后来被 Oracle 公司收购. 主要区别: Kotlin 结合了面向对象和函数式编

  • 使用kotlin集成springboot开发的超详细教程

    目录 一.安装支持插件 二.maven配置 注意 三.创建入口函数类 四.编写入口函数 五.创建数据库对象 六.创建仓库操作接口 七.创建一个业务接口来声明业务 八.创建一个业务接口实现来实现声明的业务 九.创建一个 http服务接口 目前大多数都在使用java集成 springboot进行开发,本文演示仅仅将 java换成 kotlin,其他不变的情况下进行开发. 一.安装支持插件 在 idea中安装 kotlin插件(大多数情况下会默认安装了) 二.maven配置 注意 kotlin目前不支

  • Kotlin编程条件控制示例详解

    目录 本文总览 1. When 表达式 2. If 表达式 总结 本文总览 本篇来看看 Kotlin的条件控制,这一节知识点 建议与Java中的条件结构类比,会很好理解并记住. 1. When 表达式 在 Kotlin 用 when 来定义多个分支的条件表达式.Kotlin中这个语法与 java 中的 switch 语句非常类似.代码块的执行就是将参数与所有的分⽀条件顺序⽐较,直到满⾜某个分⽀条件:(示例 ) when (x) { 1 -> print("x == 1") 2 -

  • Kotlin编程基础数据类型示例详解

    目录 本文总览 1.数值类型 2.布尔型 3.字符串 3.1 字符串字面值 3.2 字符串模板 4.数组 4.1 普通数组 4.2 原⽣类型数组 5.类型检测和类型转换 5.1 智能转换 5.2 is 与 !is 操作符 5.3 转换操作符: as 与 as? 总结 本文总览 上一篇学习了Kotlin基础语法知识,本篇开始会深入探讨一下Kotlin各个基础语法点.首先来熟悉Kotlin的数据类型和类型转换版块. 1.数值类型 在Kotlin中提供了数值类型: 整数类型:Byte,Short,In

  • go语言编程实现递归函数示例详解

    目录 前言 函数中的 return 递归的问题 总结 前言 本篇文章主要是记录一下在 GScript 中实现递归调用时所遇到的坑,类似的问题在中文互联网上我几乎没有找到相关的内容,所以还是很有必要记录一下. 在开始之前还是简单介绍下本次更新的 GScript v0.0.9 所包含的内容: 支持可变参数 优化 append 函数语义 优化编译错误信息 最后一个就是支持递归调用 先看第一个可变参数: //formats according to a format specifier and writ

  • Python面向对象编程repr方法示例详解

    目录 为什么要讲 __repr__ 重写 __repr__ 方法 str() 和 repr() 的区别 为什么要讲 __repr__ 在 Python 中,直接 print 一个实例对象,默认是输出这个对象由哪个类创建的对象,以及在内存中的地址(十六进制表示) 假设在开发调试过程中,希望使用 print 实例对象时,输出自定义内容,就可以用 __repr__ 方法了 或者通过 repr() 调用对象也会返回 __repr__ 方法返回的值 是不是似曾相识....没错..和 __str__ 一样的

  • Android开发Kotlin实现圆弧计步器示例详解

    目录 效果图 定义控件的样式 自定义StepView 绘制文本坐标 Android获取中线到基线距离 效果图 定义控件的样式 看完效果后,我们先定义控件的样式 <!-- 自定义View的名字 StepView --> <!-- name 属性名称 format 格式 string 文字 color 颜色 dimension 字体大小 integer 数字 reference 资源或者颜色 --> <declare-styleable name="StepView&q

  • Python+pyaudio实现音频控制示例详解

    简介 PyAudio是一个跨平台的音频处理工具包,使用该工具包可以在Python程序中播放和录制音频,也可以产生wav文件等 安装 pip install PyAudio 注意:使用该命令安装时可能会报错,报错内容如下: 针对该问题,我们使用whl文件进行安装,首先在网址下面找到以下文件并下载,根据自己的python版本及计算机系统下载相应文件即可. 下载完成后,切换到文件所在目录,使用如下命令安装即可 pip3 install PyAudio-0.2.11-cp38-cp38-win_amd6

  • Kotlin 标准函数和静态方法示例详解

    目录 标准函数 with run Apply 定义静态方法 注解 顶层方法 标准函数 with with 的作用是可以在连续调用同一对象的多个方法时让代码变得更加精简 val result = with(obj){ //这里是obj的上下文 "value" //with 函数的返回值 } 看个例子,例如有一个水果列表,现在我们想吃完所有水果,并将结果打印出来 val list = listOf("Apple","Banana","Ora

  • java异步编程CompletableFuture使用示例详解

    目录 一.简单介绍 二.常见操作 1.使用默认线程池 2.使用自定义线程池 3.获取线程的执行结果 三.处理异步结算的结果 四.异常处理 五.组合 CompletableFuture 六.并行运行多个 CompletableFuture 七.案例 1.从多个平台获取书价格 2.从任意一个平台获取结果就返回 一.简单介绍 CompletableFuture 同时实现了 Future 和 CompletionStage 接口. public class CompletableFuture<T> i

  • 适合面向ChatGPT编程的架构示例详解

    目录 新的需求 领域知识 架构设计 管道架构 分层架构 类分层神经网络的架构 总结一下 新的需求 我们前面爬虫的需求呢,有些平台说因为引起争议,所以不让发,好吧,那我们换个需求,本来那个例子也不好扩展了.最近AI画图也是比较火的,那么我们来试试做个程序帮我们生成AI画图的prompt. 首先讲一下AI话题的prompt的关键要素,大部分的AI画图都是有一个个由逗号分割的关键字,也叫subject,类似下面这样: a cute cat, smile, running, look_at_viewer

  • 如何优雅地在vue中添加权限控制示例详解

    前言 在一个项目中,一些功能会涉及到重要的数据管理,为了确保数据的安全,我们会在项目中加入权限来限制每个用户的操作.作为前端,我们要做的是配合后端给到的权限数据,做页面上的各种各样的限制. 需求 因为这是一个工作上的业务需求,所以对于我来说主要有两个地方需要进行权限控制. 第一个是侧边菜单栏,需要控制显示与隐藏. 第二个就是页面内的各个按钮,弹窗等. 流程 1.如何获取用户权限? 后端(当前用户拥有的权限列表)-> 前端(通过后端的接口获取到,下文中我们把当前用户的权限列表叫做 permissi

随机推荐