Kotlin:1.9.0 的新特性
一、概述
Kotlin 1.9.0版本英语官方文档
Kotlin 1.9.0 中文官方文档
The Kotlin 1.9.0 release is out and the K2 compiler for the JVM is now in Beta. Additionally, here are some of the main highlights:
Kotlin 1.9.0版本已经发布,用于JVM的K2编译器现在处于Beta阶段。此外,以下是一些主要亮点:
- 新版 Kotlin K2 编译器更新
- 稳定版枚举类的 values 函数替代
- 稳定版用于前闭后开区间的 …< 操作符
- 新增按名称获取正则表达式捕获组的公共函数
- 新增用于创建父目录路径的实用程序
- Kotlin 多平台 Gradle 配置缓存预览版
- Kotlin 多平台 Android 目标平台支持的变更
- Kotlin/Native 自定义内存分配器预览版
- Kotlin/Native 的库链接
- Kotlin/Wasm 尺寸相关的优化
主要演示的其中四个特性,测试结果图如下
二 、稳定版枚举类的 使用 entries 替代 values 函数
enum class Color(val colorName: String, var rgb: String) {RED("红色", "#FF0000"),ORANGE("橘色", "#FF7F00"),YELLOW("Yellow", "#FFFF00")
}// https://book.kotlincn.net/text/whatsnew1820.html
// entries 属性是在 Kotlin 1.8.20 中作为实验性功能引入的,在 Kotlin 1.9.0 中已经稳定// 稳定版枚举类的 使用 entries 替代 values 函数
fun findColoBy(rbg: String?): Color? = Color.entries.find { it.rgb == rbg }enum class RGB { RED, GREEN, BLUE }/*** 稳定版枚举类的 使用 entries 替代 values 函数*/
fun testEnum() {// for (color in RGB.values()) println(color.toString())for (color in RGB.entries) println(color.toString())//RED//GREEN//BLUEprintln("----------------------------------- end")
}
三、稳定版用于前闭后开区间的 …< 操作符
fun testOpenIntervalWithFrontClosed() {// for (number in 2 until 6) {
// println("number = $number")
// }//前闭后开区间的 ..< 操作符for (number in 2..<6) {println("number = $number")//number = 2//number = 3//number = 4//number = 5}println("-------------------- 稳定版用于前闭后开区间的 …< 操作符 ------- end")
}
四、新增按名称获取正则表达式捕获组的公共函数
/*** 新增按名称获取正则表达式捕获组的公共函数*/fun testRegex() {val regex ="""\b(?<city>[A-Za-z\s]+),\s(?<state>[A-Z]{2}):\s(?<areaCode>[0-9]{3})\b""".toRegex()val input = "Coordinates: Austin, TX: 123"// 坐标:奥斯汀,德克萨斯州:123val match = regex.find(input)!!println(match.groups["city"]?.value)// Austinprintln(match.groups["state"]?.value)// TXprintln(match.groups["areaCode"]?.value)// 123println("-------------------- 新增按名称获取正则表达式捕获组的公共函数 ------- end")
}
五、数据类相称的数据对象
//数据类相称的数据对象
sealed interface ReadResult
data class Number(val number: Int) : ReadResult
data class Text(val text: String) : ReadResultdata object EndOfFile : ReadResult/*** 数据类相称的数据对象*/
fun testDataObject(){println(Number(7))println(EndOfFile)//Number(number=7)//EndOfFileprintln("-------------------- 数据类相称的数据对象 ------ end")
}
六、kt_190文件完整代码
package com.example.test.ktversion/*https://book.kotlincn.net/text/whatsnew19.html*/enum class Color(val colorName: String, var rgb: String) {RED("红色", "#FF0000"),ORANGE("橘色", "#FF7F00"),YELLOW("Yellow", "#FFFF00")
}// https://book.kotlincn.net/text/whatsnew1820.html
// entries 属性是在 Kotlin 1.8.20 中作为实验性功能引入的,在 Kotlin 1.9.0 中已经稳定// 稳定版枚举类的 使用 entries 替代 values 函数
fun findColoBy(rbg: String?): Color? = Color.entries.find { it.rgb == rbg }enum class RGB { RED, GREEN, BLUE }//数据类相称的数据对象
sealed interface ReadResult
data class Number(val number: Int) : ReadResult
data class Text(val text: String) : ReadResultdata object EndOfFile : ReadResult/*** 稳定版枚举类的 使用 entries 替代 values 函数*/
fun testEnum() {// for (color in RGB.values()) println(color.toString())for (color in RGB.entries) println(color.toString())//RED//GREEN//BLUEprintln("------------------- 稳定版枚举类的 使用 entries 替代 values 函数 ----- end")
}/*** 稳定版用于前闭后开区间的 …< 操作符*/
fun testOpenIntervalWithFrontClosed() {// for (number in 2 until 6) {
// println("number = $number")
// }//前闭后开区间的 ..< 操作符for (number in 2..<6) {println("number = $number")//number = 2//number = 3//number = 4//number = 5}println("-------------------- 稳定版用于前闭后开区间的 …< 操作符 ------- end")
}/*** 新增按名称获取正则表达式捕获组的公共函数*/fun testRegex() {val regex ="""\b(?<city>[A-Za-z\s]+),\s(?<state>[A-Z]{2}):\s(?<areaCode>[0-9]{3})\b""".toRegex()val input = "Coordinates: Austin, TX: 123"// 坐标:奥斯汀,德克萨斯州:123val match = regex.find(input)!!println(match.groups["city"]?.value)// Austinprintln(match.groups["state"]?.value)// TXprintln(match.groups["areaCode"]?.value)// 123println("-------------------- 新增按名称获取正则表达式捕获组的公共函数 ------- end")
}/*** 数据类相称的数据对象*/
fun testDataObject(){println(Number(7))println(EndOfFile)//Number(number=7)//EndOfFileprintln("-------------------- 数据类相称的数据对象 ------ end")
}fun main() {testEnum()testOpenIntervalWithFrontClosed()testRegex()testDataObject()
}
相关文章:

Kotlin:1.9.0 的新特性
一、概述 Kotlin 1.9.0版本英语官方文档 Kotlin 1.9.0 中文官方文档 The Kotlin 1.9.0 release is out and the K2 compiler for the JVM is now in Beta. Additionally, here are some of the main highlights: Kotlin 1.9.0版本已经发布,用于JVM的K2编译器现在…...
golang实现从服务器下载文件到本地指定目录
一、连接服务器,采用sftp连接模式 package middlewaresimport ("fmt""time""github.com/pkg/sftp""golang.org/x/crypto/ssh" )// 建立服务器连接 func Connect(user, password, host string, port int) (*sftp.Client, e…...

C++数据结构-树的概念及分类介绍(基础篇)
1.什么是树 树是数据结构中的一种,其属于非线性数据结构结构的一种,我们前文所提到的数据结构多数都是线性的,这也是较为简单的数据结构,而接下来的树与图均属于非线性数据结构,也是概念极多的一类。 树是由结点或顶…...
职场 Death Note
场景一 测试:哎,怎么会这样呢?时间没到,他怎么就变成这个样子了呢?一副大惊小怪,整个办公室都是他的声音 开发:对对对,我代码问题,别BB了。 你直接说这个地方不对&#…...

Vue3.0组合式API:computed计算属性、watch监听器、watchEffect高级监听器
1、computed() 计算属性 在模板中绑定表达式只能用于简单的运算。如果运算比较复杂,可以使用 Vue.js 提供的计算属性,通过计算属性可以处理比较复杂的逻辑。 1.1 计算属性的应用 通过计算属性可以实现各种复杂的逻辑,包括运算、函数调用等…...
RAII 与 std::lock_guard 在 C++ 中的应用:自动化互斥锁管理与线程安全
目录 1. RAII(资源获取即初始化)概述 RAII 的优点 2. std::lock_guard 的工作原理 2.1 构造函数 2.2 析构函数 2.3 关键特性 3. 为什么 std::lock_guard 能自动管理锁的生命周期 3.1 RAII 原则的应用 3.2 异常安全 3.3 简化代码和减少错误 4.…...

风格汇:奢华风格在UI设计中如何被定义的。
在UI设计中,奢华风格通常指的是一种高端、豪华、精致的设计风格,旨在营造出奢华、豪华的视觉效果,给用户带来高品质、高档次的感受。 奢华风格的UI设计通常会运用一些富丽堂皇的元素和效果,例如金色、银色、贵族紫、华丽的字体、华…...

Vue2 qrcode+html2canvas 实现二维码的生成和保存
1.安装 npm install qrcode npm install html2canvas 2.引用 import QRCode from qrcode import html2canvas from html2canvas 效果: 1. 二维码生成: 下载二维码图片: 二维码的内容: 实现代码: <template>…...
GEE 教程:利用Google Dynamic数据进行逐月指定区域的土地分类数据提取分析
目录 简介 数据 代码 结果 简介 利用Google Dynamic数据进行逐月指定区域的土地分类数据提取分析 数据 Google Dynamic数据是指由Google自动生成、自动更新的数据,它不需要人工干预,而是通过算法和机器学习技术从各种来源获取并解析数据。这些数据可以是来自互联网上的…...
Nginx 负载均衡:优化网站性能与可扩展性的利器
在当今高流量的互联网时代,网站的性能和可扩展性成为了衡量其成功与否的关键因素之一。随着用户量的不断增加,单一服务器往往难以承受巨大的访问压力,这时就需要引入负载均衡技术来分散请求,提高系统的整体性能和可靠性。Nginx&am…...

【Python基础】Python错误和异常处理(详细实例)
本文收录于 《Python编程入门》专栏,从零基础开始,分享一些Python编程基础知识,欢迎关注,谢谢! 文章目录 一、前言二、Python中的错误类型三、Python异常处理机制3.1 try-except语句3.2 try-except-else语句3.3 try-fi…...

如何查看串口被哪个程序占用?截止目前最方便的方法
痛点:串口因为某种原因被占用,如何找到罪魁祸首? 做开发的小伙伴们,经常会遇到这样的问题:串口因为某种原因被占用,导致无法通讯,但是又找不到被哪个程序占用。只有重启电脑,才能解…...

深入理解SpringBoot(一)----SpringBoot的启动流程分析
1、SpringApplication 对象实例化 SpringApplication 文件 public static ConfigurableApplicationContext run(Object[] sources, String[] args) {// 传递的source其实就是类Bootstrapreturn new SpringApplication(sources).run(args);// 实例化一个SpringApplication对象执…...

MySql基础-单表操作
1. MYSQL概述 1.1 数据模型 关系型数据库 关系型数据库(RDBMS):建立在关系模型基础上,由多张相互连接的二维表组成的数据库。 特点: 使用表存储数据,格式统一,便于维护 使用SQL语言操作,标准统一&…...

【STM32系统】基于STM32设计的SD卡数据读取与上位机显示系统(SDIO接口驱动、雷龙SD卡)——文末资料下载
基于STM32设计的SD卡数据读取与上位机显示系统 演示视频: 基于STM32设计的SD卡数据读取与上位机显示系统 简介:本研究的主要目的是基于STM32F103微控制器,设计一个能够读取SD卡数据并显示到上位机的系统。SD卡的数据扇区读取不仅是为了验证存…...
SpringBoot开发——整合Redis
文章目录 1、创建项目,添加Redis依赖2、创建实体类Student3、创建Controller4、配置application.yml5、整合完成 Redis ( Remote Dictionary Server )是一个开源的内存数据库,遵守 BSD 协议,它提供了一个高性能的键值(…...
OpenCV结构分析与形状描述符(17)判断轮廓是否为凸多边形的函数isContourConvex()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 测试轮廓的凸性。 该函数测试输入的轮廓是否为凸的。轮廓必须是简单的,即没有自相交。否则,函数的输出是不确定的。 cv:…...
P5425 [USACO19OPEN] I Would Walk 500 Miles G
*原题链接* 很离谱的题。首先可以想到暴力连边,整个图为一个完全图,将所有的边选出来,然后从小到大一条条加入,当剩下集合数量 <K 的时候就结束。答案为加入的最后一条边的大小。如果用prim算法的话时间复杂度为。足以通过此题…...

Java高级Day41-反射入门
115.反射 反射机制 1.根据配置文件re.properties指定信息,创建Cat对象并调用hi方法 SuppressWarnings({"all"}) public class ReflectionQuestion {public static void main(String[] args) throws IOException {//根据配置文件 re.properties 指定信息…...
在Linux系统上使用Docker部署java项目
一.使用Docker部署的好处: 在Linux系统上使用Docker部署项目通常会大大简化部署流程,因为Docker可以将应用程序及其依赖打包到一个独立的容器中。 Docker打包应用程序时会将其与所有依赖项(操作系统、库等)一起打包。这样&#…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁
赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...