Kotlin学习——流程控制,when,循环,range工具 kt里的equals if实现类似三元表达式的效果

本文主要是介绍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实现类似三元表达式的效果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/438914

相关文章

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放