当前位置: 首页 > news >正文

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()
}
http://www.lryc.cn/news/438578.html

相关文章:

  • golang实现从服务器下载文件到本地指定目录
  • C++数据结构-树的概念及分类介绍(基础篇)
  • 职场 Death Note
  • Vue3.0组合式API:computed计算属性、watch监听器、watchEffect高级监听器
  • RAII 与 std::lock_guard 在 C++ 中的应用:自动化互斥锁管理与线程安全
  • 风格汇:奢华风格在UI设计中如何被定义的。
  • Vue2 qrcode+html2canvas 实现二维码的生成和保存
  • GEE 教程:利用Google Dynamic数据进行逐月指定区域的土地分类数据提取分析
  • Nginx 负载均衡:优化网站性能与可扩展性的利器
  • 【Python基础】Python错误和异常处理(详细实例)
  • 如何查看串口被哪个程序占用?截止目前最方便的方法
  • 深入理解SpringBoot(一)----SpringBoot的启动流程分析
  • MySql基础-单表操作
  • 【STM32系统】基于STM32设计的SD卡数据读取与上位机显示系统(SDIO接口驱动、雷龙SD卡)——文末资料下载
  • SpringBoot开发——整合Redis
  • OpenCV结构分析与形状描述符(17)判断轮廓是否为凸多边形的函数isContourConvex()的使用
  • P5425 [USACO19OPEN] I Would Walk 500 Miles G
  • Java高级Day41-反射入门
  • 在Linux系统上使用Docker部署java项目
  • 【C++】标准库IO查漏补缺
  • python简单易懂的lxml读取HTML节点及常用操作方法
  • Java | Leetcode Java题解之第406题根据身高重建队列
  • 安卓获取apk的公钥,用于申请app备案等
  • 【leetcode_python】杨辉三角
  • Parallels Desktop 20 for Mac中文版发布了?会哪些新功能
  • SpringBoot整合SSE-灵活管控连接
  • 挖矿木马-Linux
  • 【leetcode——415场周赛】——python前两题
  • 【CSS in Depth 2 精译_029】5.2 Grid 网格布局中的网格结构剖析(上)
  • ZYNQ LWIP(RAW API) TCP函数学习