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

Kotlin 1.6.0 的新特性

1、稳定版对于枚举、密封类与布尔值主语穷尽 when 语句

一个详尽的when语句包含了所有主题可能的类型或值的分支,或者对于一些类型包含一个else分支。它覆盖了所有可能的情况,使代码更加安全。

即将禁止非详尽的when语句,以使行为与when表达式一致。为了确保平滑的迁移,Kotlin 1.6.0 会对枚举、密封类或布尔类型的主题的非详尽的when语句发出警告。这些警告将在未来的版本中变成错误。

2、稳定版挂起函数作为超类型

在Kotlin 1.6.0中,挂起函数类型的实现已经变得稳定。1.5.30提供了预览版。

在设计使用Kotlin协程并接受挂起函数类型的api时,该特性非常有用。现在,可以通过将所需的行为封装在实现挂起函数类型的单独类中来简化代码。

class MyClickAction : suspend () -> Unit {override suspend fun invoke() { TODO() }
}fun launchOnClick(action: suspend () -> Unit) {}

在先前只允许使用lambda和挂起函数引用的地方,现在可以使用此类的实例:launchOnClick(MyClickAction())

目前由于实现细节,存在两个限制:

  1. 您不能在超类型列表中混合普通函数类型和暂停函数类型。
  2. 您不能使用多个暂停函数超类型。

3、稳定版挂起转换

Kotlin 1.6.0引入了从普通函数类型到挂起函数类型的稳定转换。从1.4.0开始,该功能支持函数字面值和可调用引用。在1.6.0中,它可以与任何形式的表达式一起使用。作为调用参数,现在可以传递任何适合普通函数类型的表达式,其中预期是挂起函数类型。编译器将自动执行隐式转换。

fun getSuspending(suspending: suspend () -> Unit) {}fun suspending() {}fun test(regular: () -> Unit) {getSuspending { }           // OKgetSuspending(::suspending) // OKgetSuspending(regular)      // OK
}

4、稳定版注解类实例化

Kotlin 1.5.30引入了在JVM平台上实例化注解类的实验性支持。在1.6.0中,该功能默认可用于Kotlin/JVM和Kotlin/JS。

5、改进了递归泛型类型的类型推断

Kotlin 1.5.30引入了对递归泛型类型的类型推断的改进,使其仅基于对应类型参数的上界即可推断类型参数。该改进只能在编译器选项下使用。在版本1.6.0及更高版本中,默认启用了此功能

// Before 1.5.30
val containerA = PostgreSQLContainer<Nothing>(DockerImageName.parse("postgres:13-alpine")).apply {withDatabaseName("db")withUsername("user")withPassword("password")withInitScript("sql/schema.sql")
}// With compiler option in 1.5.30 or by default starting with 1.6.0
val containerB = PostgreSQLContainer(DockerImageName.parse("postgres:13-alpine")).withDatabaseName("db").withUsername("user").withPassword("password").withInitScript("sql/schema.sql")

6、构建器类型推断变更

Builder inference是一种类型推断方式,用于调用泛型构建器函数时非常有用。它可以通过lambda参数内部调用的类型信息来推断调用的类型参数。

进行多个更改,以更接近完全稳定的builder推断。从1.6.0开始:

可以在builder lambda中调用返回尚未推断类型实例的函数,而无需指定1.5.30中引入的-Xunrestricted-builder-inference编译器选项。 通过使用-Xenable-builder-inference,可以编写自己的构建器而无需应用@BuilderInference注解。

请注意,这些构建器的客户端将需要指定相同的-Xenable-builder-inference编译器选项。

使用-Xenable-builder-inference,如果常规类型推断无法获取关于类型的足够信息,则builder推断将自动激活。

7、对类的类型参数上注解的支持

@Target(AnnotationTarget.TYPE_PARAMETER)
annotation class BoxContentclass Box<@BoxContent T> {}

所有类型参数上的注解都会被编译为 JVM 字节码,这样注解处理器就可以使用它们。

8、标准库

  • 新版 readline 函数
  • 稳定版 typeOf()
  • 稳定版集合构建器
  • 稳定版 Duration API
  • 按 Regex 拆分为序列
  • 整数的循环移位运算
  • JS 平台 replace() 与 replaceFirst() 的变更
  • 既有 API 的改进
  • 弃用项

相关文章:

Kotlin 1.6.0 的新特性

1、稳定版对于枚举、密封类与布尔值主语穷尽 when 语句 一个详尽的when语句包含了所有主题可能的类型或值的分支&#xff0c;或者对于一些类型包含一个else分支。它覆盖了所有可能的情况&#xff0c;使代码更加安全。 即将禁止非详尽的when语句&#xff0c;以使行为与when表达…...

nextjs13临时笔记

动态路由 文件夹以中括号命名[id] -pages: --list: ---[id]: ----index.jsx(访问路径/list/1 即这种形式/list/:id) ---index.jsx(访问路径/list)[...params]gpt接口分析 初始化项目 npm install next react react-dom # or yarn add next react react-dom # or pnpm add n…...

云计算与区块链之间有什么区别?

区块链是一种去中心化的分布式数字账本&#xff0c;可实现安全透明的交易和数据存储。 它使用节点网络来验证和验证交易。 云计算通过互联网提供计算资源&#xff0c;例如服务器、存储和软件。区块链是一种分散且不可变的虚拟数据分类账&#xff0c;用于维护交易信息和监控网络…...

sed命令常用例子

替换文件中的文本 将文件file.txt中的所有"old_text"替换成"new_text"&#xff1a; sed -i ‘s/old_text/new_text/g’ file.txt 删除文件中的某行 删除文件file.txt中的第5行&#xff1a; sed -i ‘5d’ file.txt 在文件中添加一行 在文件file.txt…...

MB510 3BSE002540R1在机器视觉工业领域最基本的应用

​ MB510 3BSE002540R1在机器视觉工业领域最基本的应用 大家都说人类感知外界信息的80%是通过眼睛获得的&#xff0c;图像包含的信息量是最巨大的。那么机器视觉技术的出现&#xff0c;就是为机器设备安上了感知外界的眼睛&#xff0c;使机器具有像人一样的视觉功能&#xff0c…...

nightingale-0-介绍单机二进制部署

(一) 夜莺介绍 Nightingale | 夜莺监控&#xff0c;一款先进的开源云原生监控分析系统&#xff0c;采用 All-In-One 的设计&#xff0c;集数据采集、可视化、监控告警、数据分析于一体&#xff0c;与云原生生态紧密集成&#xff0c;提供开箱即用的企业级监控分析和告警能力。于…...

一个从培训学校走出来的测试工程师自述....

简单介绍一下我自己&#xff0c;1997年的&#xff0c;毕业一年了&#xff0c;本科生&#xff0c;专业是机械制造及其自动化。 在校度过了四年&#xff0c;毕业&#xff0c;找工作&#xff0c;填三方协议&#xff0c;体检&#xff0c;入职。我觉得我可能就这么度过我平平无奇的…...

关于pyqt的一些用法

QT原生是C&#xff0c;pyqt基于python语言。 关于插件&#xff1a; 安装一个PyUIC&#xff0c;一个Qt Designer 点击Qt Designer可以出来ui配置页面&#xff0c;和qt原生IDE基本一样 上面操作会生成.ui文件&#xff0c;选中此文件&#xff0c;点击PyUIC&#xff0c;会生成对…...

【Paper Note】ViViT: A Video Vision Transformer

ViViT: A Video Vision Transformer AbstractOverview of vision transformer 回顾ViTEmbedding video clips 视频编码方式Uniform frame sampling 均匀采样Tubelet embedding 时空管采样初始化3D卷积代码介绍视频编码输入到模型当中 Transformer Models for VideoSpatio-tempo…...

Java入坑之IO操作

目录 一、IO流的概念 二、字节流 2.1InputStream的方法 2.2Outputstream的方法 2.3资源对象的关闭&#xff1a; 2.4transferTo()方法 2.5readAllBytes() 方法 2.6BufferedReader 和 InputStreamReader 2.7BufferedWriter 和 OutputStreamWriter 三、路径&#xff1a;…...

校园小助手【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址&#xff1a; 更多系统资源库地址&#xff1a;骚戴的博客_CSDN_更多系统资源 更多系统…...

String的不可变特性

1 问题 如何理解“String是不可变的&#xff0c;但是可以变”&#xff1f; 2 方法 &#xff08;1&#xff09;String的不可变特性体现在内容和长度 首先在idea中点开查看String这个类是如何定义的 可以看到这样一行代码&#xff1a;private final char value[]; 正是因为这个数…...

使用MMDeploy(预编译包)转换MMxx(MMDeploy支持库均可)pth权重到onnx,并使用python SDK进行部署验证

MMDeploy使用python部署实践记录 准备工作空间所需环境配置使用MMDeploy得到onnx使用MMDeploy加载onnx模型对单张图片进行推理使用python SDK对onnx模型进行验证 注意 mmdeploy C SDK的使用部署和实际操作过程请看本人另外一篇博文使用MMDeploy&#xff08;预编译包&#xff09…...

Shiro安全框架简介

一、权限管理 1.1 什么是权限管理 基本上只要涉及到用户参数的系统都要进行权限管理&#xff0c;使用权限管理实现了对用户访问系统的控制&#xff0c;不同的用户访问不同的资源。按照安全规则或者安全策略控制用户访问资源&#xff0c;而且只能访问被授权的资源 权限管理包括认…...

三行Python代码,让数据处理速度提高2到6倍

本文可以教你仅使用 3 行代码&#xff0c;大大加快数据预处理的速度。 Python 是机器学习领域内的首选编程语言&#xff0c;它易于使用&#xff0c;也有很多出色的库来帮助你更快处理数据。但当我们面临大量数据时&#xff0c;一些问题就会显现…… 在默认情况下&#xff0c;…...

空间向量模长

// 空间向量模长 #include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char **argv) { float x, y, z; float mochang 0.0; x y z 0.0; if (argc ! 4) { printf("usage:%s x y z\n", argv[1]); …...

活动需求中灵活使用Redis提升生产力

抽奖 一堆用户参与进来&#xff0c;然后随机抽取几个幸运用户给予实物/虚拟的奖品&#xff1b;此时&#xff0c;开发人员就需要写上一个抽奖的算法&#xff0c;来实现幸运用户的抽取&#xff1b;其实我们完全可以利用Redis的集合&#xff08;Set&#xff09;&#xff0c;就能轻…...

Java知识点学习(第16天)

Innodb是如何实现事务的&#xff1f; innodb通过Buffer Pool&#xff0c;LogBuffer&#xff0c;Redo Log&#xff0c;Undo Log来实现事务&#xff0c;以一个update语句为例&#xff1a; innodb在收到一个update语句后&#xff0c;会先根据条件找到数据所在的页&#xff0c;并…...

ORA-1688: unable to extend table AUDSYS.AUD$UNIFIED

昨晚正在外滩玩&#xff0c;有个客户发过来一段报错&#xff0c;已经影响到业务了。一看就是12C以后版本才有的问题&#xff0c;&#xff0c;赶紧在手机中收到临时解决办法 报错如下 ORA-1688: unable to extend table AUDSYS.AUD$UNIFIED partition SYS_P42549 by 1024 in t…...

抖音滑块以及轨迹分析

声明 本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。 如有侵权,请联系我进行删除。 我们在web端打开用户主页的时候,时不时的会出现滑…...

Helm-Intellisense:VS Code智能补全插件,提升values.yaml编写效率

1. 项目概述&#xff1a;为什么我们需要一个Helm智能补全工具&#xff1f;如果你和我一样&#xff0c;日常工作中大量使用Helm来管理Kubernetes应用&#xff0c;那你一定对编写values.yaml文件时那种“盲人摸象”的感觉深有体会。面对一个动辄几十上百行配置的Helm Chart&#…...

Nixtla时间序列预测库实战:从统计模型到深度学习的一站式解决方案

1. 项目概述&#xff1a;时间序列预测的“瑞士军刀”如果你正在处理销售预测、服务器负载监控或者任何与时间相关的数据预测问题&#xff0c;并且厌倦了在复杂的模型库和繁琐的预处理步骤之间反复横跳&#xff0c;那么 Nixtla 这个开源项目很可能就是你一直在找的“瑞士军刀”。…...

自托管链接管理平台Linko:Go+React技术栈部署与核心功能解析

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目&#xff0c;叫monsterxx03/linko。乍一看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;但如果你经常需要管理一堆链接、书签&#xff0c;或者在做内容聚合、个人知识库&#xff0c;那这个工具很可能就是你一直在…...

多智能体强化学习环境PettingZoo:从核心概念到工程实践

1. 项目概述&#xff1a;从零理解PettingZoo如果你正在寻找一个能让你快速上手、高效构建多智能体强化学习&#xff08;Multi-Agent Reinforcement Learning, MARL&#xff09;实验环境的工具&#xff0c;那么Farama Foundation旗下的PettingZoo项目&#xff0c;绝对是你绕不开…...

韩国市场合规语音交付迫在眉睫!ElevenLabs韩文生成必须配置的4项GDPR+KCC隐私开关

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;韩国市场语音AI合规落地的紧迫性与战略意义 韩国《个人信息保护法》&#xff08;PIPA&#xff09;于2023年修订后&#xff0c;明确将语音生物特征数据列为“敏感信息”&#xff0c;要求语音AI系统在采集…...

CircuitPython REPL与库管理:嵌入式开发的效率利器

1. CircuitPython REPL&#xff1a;你的嵌入式开发“瑞士军刀” 如果你玩过Arduino&#xff0c;肯定对“上传-编译-看结果”这个循环不陌生。每次改一行代码&#xff0c;都得重新编译、上传&#xff0c;然后盯着串口看输出&#xff0c;效率低得让人抓狂。CircuitPython带来的R…...

Sophia优化器:二阶曲率感知如何加速大模型训练与调参

1. 项目概述&#xff1a;当优化器遇上“二阶”智慧最近在复现一些前沿的论文实验时&#xff0c;我又一次被优化器的选择给卡住了。AdamW虽然稳&#xff0c;但在某些超大规模模型或特定任务上&#xff0c;总觉得收敛速度不够快&#xff0c;调参又是个玄学。就在我对着损失曲线发…...

Linux磁盘空间告警与清理实战

Linux磁盘空间告警与清理实战磁盘空间不足是 Linux 运维中最常见也最容易引发连锁故障的问题之一。很多服务平时运行正常&#xff0c;但一旦分区写满&#xff0c;轻则日志无法落盘&#xff0c;重则数据库异常、服务启动失败甚至系统不可用。中级技术人员不能只会“删文件腾空间…...

基于规则引擎的Markdown笔记自动化归档工具设计与实现

1. 项目概述&#xff1a;一个为知识工作者打造的自动化归档工具如果你和我一样&#xff0c;每天在 Obsidian、Logseq 或者任何支持 Markdown 的笔记软件里记录大量的“每日笔记”&#xff0c;那么你一定也面临过同样的困扰&#xff1a;日积月累&#xff0c;一个名为“Daily Not…...

体育科学论文降AI工具免费推荐:2026年体育科学研究毕业论文知网AIGC超标4.8元亲测达标完整指南

体育科学论文降AI工具免费推荐&#xff1a;2026年体育科学研究毕业论文知网AIGC超标4.8元亲测达标完整指南 帮同学选过降AI工具&#xff0c;综合价格、效果、保障来看&#xff0c;推荐嘎嘎降AI&#xff08;www.aigcleaner.com&#xff09;。 4.8元&#xff0c;达标率99.26%&a…...