Kotlin学习——流程控制,when,循环,range工具 kt里的equals if实现类似三元表达式的效果
Kotlin 是一门现代但已成熟的编程语言,旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作,并提供了多种方式在多个平台间复用代码,以实现高效编程。
https://play.kotlinlang.org/byExample/01_introduction/02_Functions
其他关于kt的博客文章如下:
- Kotlin学习——hello kotlin & 函数function & 变量 & 类 + 泛型 + 继承
目录
- 引出
- when(case)
- 循环loops
- for,while,do while
- Iterators 自定义迭代
- range工具
- equals等于
- 类三元表达式
- 总结
引出
1.kt中的when语句具有较大的灵活性;
2.kt中的循环,支持自定义迭代器;
3.range工具,快速定义循环方式,开始,结束,步长;
4.equals等于,==比较值,而 ===比较引用;
5.if语句实现类似三元表达式的效果;
when(case)
Kotlin在构建时提供了更灵活、更清晰的when语句,而不是广泛使用的switch语句。它既可以用作语句,也可以用作表达式。
- 不存在穿透的问题,只会执行其中一个语句
- 有返回值的when,else语句不能省略
package com.tianju.ktFlow/*** 不存在穿透的问题,只会执行其中一个语句*/fun cases(obj: Any): Unit {when(obj){1 -> println("one")"hello" -> println("pet")is Long -> println("Long")!is String -> println("not a string")else -> println("unknown") // 默认语句,可以省略}
}/*** 有返回值的when*/fun whenAssign(obj: Any): Any {val resp = when(obj){1-> "one""hello"->1is Long -> falseelse -> 42 // 此时这条语句不能省略}return resp
}fun main() {cases("hello")cases("1")cases(3.6)cases(2)cases(1)val resp = whenAssign(1)println(resp)}
循环loops
for,while,do while
package com.tianju.ktFlow
// list
val cakes = listOf<String>("cat","rabbit","dog")
fun eatCake() = println("Eat a Cake")
fun throwCake() = println("Throw a cake")fun main() {// for循环for (cake in cakes){println("cake looks like $cake ")}// while循环var cakeEat = 0 // val 类型不能被重新设置while (cakeEat < 3){eatCake()cakeEat ++}// do-while循环var throwCake = 0do {throwCake()throwCake ++}while (throwCake < 2)}
Iterators 自定义迭代
- 定义一个iterator,名字必须是 iterator
- 当list有下一个时,返回animal 即,满足hasNext()
:
Boolean,next():
Animal
package com.tianju.ktFlowclass Animal(val name:String)class Zoo(val animals:List<Animal>){/*** 定义一个iterator,名字必须是这个;* 当list有下一个时,返回animal*/operator fun iterator():Iterator<Animal>{return animals.iterator()}
}fun main() {val zoo = Zoo(listOf(Animal("tiger"),Animal("lion")))for (animal in zoo){println("the animal is $animal, name is ${animal.name}")}
}
range工具
Kotlin中有一套用于定义范围的工具
- … 表示范围 左闭右闭,包括2
- until 左闭右开,不包括3
- step 步长为2
- downTo 从大到小
- char类型也能用,也支持 step
- 在 if语句中 使用range
package com.tianju.ktFlowfun main() {// .. 表示范围 左闭右闭,包括2for (i in 0..2){println(i)}// until 左闭右开,不包括3for (i in 0 until 3){println(i)}// step 步长为2for (i in 2..8 step 2){println(i)}// 从大到小println("********")for (i in 3 downTo 0){println(i)}println("*******char********")for (c in 'a'..'d'){println(c)}// char也支持 stepfor (c in 'z' downTo 's' step 2){println(c)}// 在 if语句中 使用rangeval x =2if (x in 1..5){println("x is in range from 1 to 5")}if (x !in 6..10){println("x is not in range from 6 to 10")}
}
equals等于
- ==比较值是否相同,相当于 equals
- === 比较两个引用是否指向同一个对象
package com.tianju.ktFlowval authors = setOf("pet","shi","tan")
val writers = setOf("tan","pet","shi")fun main() {// 比较值是否相同,相当于 equalsprintln(authors == writers)println(authors.equals(writers))// 比较两个引用是否指向同一个对象println(authors === writers)
}
类三元表达式
kt 里面没有三元表达式,可以使用if实现
package com.tianju.ktFlow/*** kt 里面没有三元表达式* ternary operator condition ? then : else*/// 可以使用if作为表达式实现
fun max(a:Int,b:Int) = if (a>b) a else bfun main() {println(max(39,45))
}
总结
1.kt中的when语句具有较大的灵活性;
2.kt中的循环,支持自定义迭代器;
3.range工具,快速定义循环方式,开始,结束,步长;
4.equals等于,==比较值,而 ===比较引用;
5.if语句实现类似三元表达式的效果;
相关文章:

Kotlin学习——流程控制,when,循环,range工具 kt里的equals if实现类似三元表达式的效果
Kotlin 是一门现代但已成熟的编程语言,旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作,并提供了多种方式在多个平台间复用代码,以实现高效编程。 https://play.kotlinlang.org/byExample/01_introduction/02_Functio…...

利用STM32CubeMX解读时钟树
1,低速时钟 LSE是外部晶振作时钟源,主要提供给实时时钟模块,所以一般采用32.768KHz。LSI是由内部RC振荡器产生,也主要提供给实时时钟模块,频率大约为40KHz。(LSE和LSI)只是提供给芯片中的RTC(实时时钟)及IWDG(独立看门…...

Unity-链接MySql8.0
链接MySql8.0 1.准备dll 一、找到l18N相关的dll 这里给出一个参考地址 D:\Unity\2020.3.48f1c1\Editor\Data\MonoBleedingEdge\lib\mono\unityjit在里面找到如下图的四个dll 二、下载数据库链接dll https://downloads.mysql.com/archives/c-net/在这里搜索历史版本(Archiv…...
Hive csv文件导入Hive
一、如何把csv文件导入Hive (1) 在Hive中建立与csv相对应的表 create table if not exists tmp.tmp_wenxin_20231123 (redeem_code_id string comment ) ROW FORMAT DELIMITED FIELDS TERMINATED BY , STORED AS TEXTFILE;创建了一张名为tmp_wenxin_20231123的hive表&am…...

嵌入式的学习需要合理规划时间
低级的欲望放纵即可获得,高级的欲望只有克制才能达成。——卡耐基1、粉丝的误会 很多粉丝,问我, "胡老师我想报您的培训班。" ... 得知我知识业余时间写文章,紧接着又会问, "jg单位这么清闲啊&#…...

HTTP协议发展
HTTP 1.0 -> HTTP 1.1 -> HTTP 2.0 -> HTTP 3.0 (QUIC) 每一代HTTP解决了什么问题? 下图说明了主要功能。 HTTP 1.0 于 1996 年最终确定并完整记录。对同一服务器的每个请求都需要单独的 TCP 连接。 HTTP 1.1 于 1997 年发布。TCP 连接可以保持打开状态…...

杰发科技AC7801——ADC软件触发的简单使用
前言 7801资料读起来不是很好理解,大概率是之前MTK的大佬写的。在此以简单的方式进行描述。我们做一个简单的规则组软件触发Demo。因为规则组通道只有一个数据寄存器,因此还需要用上DMA方式搬运数据到内存。 AC7801的ADC简介 7801的ADC是一种 12 位 逐…...

佳易王个体诊所门诊电子处方软件试用版下载,佳易王电子处方软件的配方模板功能作用与教程
佳易王个体诊所门诊电子处方软件试用版下载,佳易王电子处方软件的配方模板功能作用与教程 1、软件试用版及教程可以点击下方的官网卡片 2、软件中有一个实用的功能,配方模板功能,在开处方单时候可以一键导入配方,节省时间。 而…...

FFmpeg零基础学习(二)——视频文件信息获取
目录 前言正文一、获取宽高信息1、核心代码2、AVFormatContext3、avformat_alloc_context4、avformat_open_input5、avformat_find_stream_info6、av_dump_format7、av_find_best_stream End、遇到的问题1、Qt Debug模式avformat_alloc_context 无法分配对象,而Rele…...

探索 Vue 中的 bus.$emit:实现组件通信的强大工具
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...

2017年五一杯数学建模A题公交车排班问题解题全过程文档及程序
2017年五一杯数学建模 A题 公交车排班问题 原题再现 随着徐州市经济的快速发展,公交车系统对于人们的出行扮演着越来越重要的角色。在公交车资源有限的情况下,合理的编排公交车的行车计划成为公交公司亟待解决的问题。以下给出公交车排班问题中的部分名…...

【c++】——类和对象(下) ——内存管理
作者:chlorine 专栏:c专栏 目录 💻 C/C内存分布 💻C语言中动态内存管理方式:malloc/calloc/realloc/free 编辑 💻C内存管理方式 👉new/delete操作内置类型 👉new和delete操作自定义类型 …...

大数据平台/大数据技术与原理-实验报告--部署全分布模式Hadoop集群
实验名称 部署全分布模式Hadoop集群 实验性质 (必修、选修) 必修 实验类型(验证、设计、创新、综合) 综合 实验课时 2 实验日期 2023.10.16-2023.10.20 实验仪器设备以及实验软硬件要求 专业实验室(配有cen…...
Android Gradle 升级到7.x及Maven推送问题
7.0以下的Android插件工程使用Maven上传时脚本如下所示。 plugins {id com.android.libraryid kotlin-androidid maven }// 源代码一起打包 task androidSourcesJar(type: Jar) {archiveClassifier.set(sources)from android.sourceSets.main.java.sourceFiles }uploadArchive…...

【实战】K8S Helm部署Redis Cluster Redisinsight
文章目录 前言部署Redis Cluster安装Redis Insight写在最后 前言 在Web服务的开发过程中,Redis一直以来都有着举足轻重的作用。基本上所有的后端服务都会用这个中间件实现具体的业务场景,比如常作为系统缓存、分布式锁,也可以实现排名、定位…...

3.前端--HTML标签-文本图像链接【2023.11.25】
1.HTML常用标签(文本图像链接) 文本标签 标题 <h1> - <h6> 段落<p> 我是一个段落标签 </p> 换行 <br /> <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta ht…...

ctfshow刷题web入门--1--ljcsd
文章目录 ctf.show。信息搜集web1web2web3web4web5web6web7web8web9web10web11web12web13web14web15web16web17web18web19web20。爆破。知识1.1 播种随机数生成器-mt_srand。参考web21--重点web22--做不出来web23web24web25web26web27web28。。。命令执行。知识1 绕过正则表达式…...

乘法原理 LeetCode 828. 统计子串中的唯一字符
我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符,并返回唯一字符的个数。 例如:s "LEETCODE" ,则其中 "L", "T","C","O","D" 都是唯一字符,…...

python桌面开发PyQt6库和工具库QTDesigner安装和配置
一、安装PyQt6 二、安装pyqt6-tools 三、安装外部工具 四、创建QTDesigner 1.首先查找designer.exe的路径(可以自己在窗口中选择,也可以使用Everything搜索) 2.使用Everything搜索后会出现多个designer.exe,选中,OpenPath 3.选择…...

火柴棒等式
枚举 只要在保证等式正确的基础上判断火柴棒有没有用完就可以 因为数比较小,而且我不知道最大的等式中的数是多少,索性就设置为999了 还好对效率要求不大(doge) 要不然就得自己慢慢改最大数来试了 代码如下: #in…...

深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...