Kotlin 2.1.0 发布,带来新的语言特性和编译器更新

科技   2024-12-13 16:38   辽宁  

作者 | Sergio De Simone
译者 | 平川
策划 | Tina

Kotlin 2.1.0 引入了新语法,包括守卫条件、非局部breakcontinue以及多$符字符串插值。此外,它还扩展了多平台功能,并改进了 K2 编译器。

when表达式中的守卫条件旨在使条件逻辑更加简洁易读,使开发人员可以在主条件关联到分支之后再加入一个if条件,例如:

when (httpResponse) {    is Success -> ...    is HttpError if httpResponse.status >= 500 -> ...    is HttpError -> ...}

只有当主条件和if条件都验证通过时,才会执行带有守卫条件的分支中的代码。此外,它还支持 if ... else

对于在循环内部执行的 lambda 表达式,非局部breakcontinue使开发人员可以从这些表达式中中断或继续执行循环,例如:

fun processList(records: List<Int>): Boolean {    for (record in list) {        val variable = record.nullableValue() ?: run {            log.warning("Record is null or invalid, continuing...")            continue        }        if (variable == 0) return true    }    return false}

在语法方面,Kotlin 2.1.0 还扩展了字符串插值功能,使得在插值字符串内使用$符号变得更容易,不需要再转义了。例如,在生成 JSON 模式时,就可以使用$$作为插值前缀,如下例所示:

val KClass<*>.jsonSchema : String    get() = $$"""    {      "$schema": "https://json-schema.org/draft/2020-12/schema",      "$id": "https://example.com/product.schema.json",      "$dynamicAnchor": "meta"      "title": "$${simpleName ?: qualifiedName ?: "unknown"}",      "type": "object"    }    """

其他新增的语法特性包括:@SubclassOptInRequired注解 要求显式选择启用子类化;改进泛型函数的重载解析;改进使用密封类的when表达式的穷举检查。

这里描述的新语法特性仍处于预览阶段,如果要使用这些特性,必须在编译器层面启用。

Kotlin 2.1.0 版本还带来了更灵活的 K2 编译器,新增了可配置的编译器检查功能,包括未使用的变量、无法访问的代码、已定义但未使用的值等。反过来,K2 现在也支持逐一关闭所有警告。

K2 还带来了一个经过改进的kapt插件实现。kapt是一个注解处理器,可以使用 Dagger 或 Data Binding 等库根据文本注解生成 / 修改代码。虽然kapt目前处于维护模式,并被 Kotlin 符号处理 API 所取代,但 Kotlin 2.1.0 带来的新版本为现有的所有用户提供了更好的性能。

Kotlin 2.1.0 带来的另外一项重大变化是多平台编程。它支持在不使用 Objective-C 头文件的情况下使用 Swift API,支持配置编译器选项的新 DSL,还支持从任何平台发布多平台库,包括之前被排除在外的 macOS。

Kotlin 2.1.0 可能会破坏现有代码,因此,在使用 IntelliJ IDEA 2023.3 和 Android Studio Iguana (2023.2.1) Canary 15 更新构建脚本之前,务必要查看官方迁移指南。

原文链接:

https://www.infoq.com/news/2024/12/kotlin-2-1-language-features/

声明:本文为 InfoQ 翻译,未经许可禁止转载。

今日好文推荐

1620 天后,Redis 之父强势归来:开始着手修复社区裂痕,并布局下一代向量数据库

号召全体员工“一起开除老板”!极狐 GitLab 架构师怒斥高层“恐吓免费版用户”,前员工揭 CEO“不懂开源”?

硅谷 1/10 程序员在摸鱼?拿20-30万美元年薪却几乎不干活

我们采访了亚马逊 CTO,但 AI 不是重点

会议推荐

12 月 13 日至 14 日(周五至周六),AICon 全球人工智能开发与应用大会将在北京盛大开幕!本次大会汇聚 70+ 位 AI 及技术领域的顶尖专家,深入探讨大模型与推理、AI Agent、多模态、具身智能等前沿话题。此外还有丰富的圆桌论坛、以及展区活动,带你深入探索大模型的最新实践与未来趋势。年度最后一次 AI 盛宴,让我们一起见证 AI 未来。

InfoQ
为一线互联网公司核心技术人员提供优质内容。科技圈的观察者,前沿技术的传播者。
 最新文章