我们好,最近看到kotlin官网上放出了kotlin的1.9.0-Beta版,不知道为啥,看到新事物出现就很高兴,特别写篇文章简简略单介绍一下。

前提:插件装置

笔者运用IDE为intellij idea2023最新社区版,经过左上角翻开File->Settings->Languages & Frameworks -> Kotlin

Kotlin1.9.0-Beta,它来了!!

将最上面的Update Channel更改为Early Access Preview,然后点击右边的Check again,一会下面就会提示kotlin 1.9.0-Beta能够装置了,选择装置即可。

PS:防止运用Intellij idea太旧版别,笔者运用了2021社区版无法检测出kotlin最新插件版别,下面贴一个官网截图以供参阅:

Kotlin1.9.0-Beta,它来了!!


接下来咱们就来了解下kotlin新版别的一些特性吧。

一. 新操作符..>的支撑

Kotlin1.9.0-Beta,它来了!!

该操作符1.7.20引入了实验版别,到了该新版别才变为stable状况。这是一个规模操作符,而且区间属于左闭右开的

咱们写一个简略的比如:

fun main() {
    for (i in 0 ..< 10) {
        println("print: $i")
    }
}

看下输出成果:

Kotlin1.9.0-Beta,它来了!!

没有这个新操作符,还记得咱们之前用啥完成区间左闭右开的操作吗?是until

fun main() {
    for (i in 0 until 10) {
        println("print: $i")
    }
}

Kotlin1.9.0-Beta,它来了!!

能够看到输出成果和..<一摸相同。官方为啥要供给一个重复的操作符呢,首要便是由于 ..< until愈加生动形象、直观的提示程序,这是一个左闭又开的区间,尽或许防止程序犯错

这儿趁便说下..<until简略差异

  • until是一个中缀方法

    Kotlin1.9.0-Beta,它来了!!

  • ..<是运算符重载函数:

    Kotlin1.9.0-Beta,它来了!!

一些场景下,咱们能够重写上面的函数,自定义一些完成逻辑,来完成优雅的代码编写。

二. gradle configuration cache将在kotlin多平台支撑

Kotlin1.9.0-Beta,它来了!!

gradle生命周期分为三个阶段:初始化、装备( configuration )和执行。在装备阶段,首要是解析各项目下的build.gradle脚本,并构造task任务图。所以,如果能开启装备阶段缓存能够提高咱们项目的编译功率,下降项目编译时间

笔者这儿并没有去专门测试,仅仅做一个说明性的讲解。一起请我们注意,想要支撑装备阶段缓存,或许并不是一项简略的作业,项目或许也需要做许多的适配作业,记得之前看文章好像有看到过一些gradle编译阶段增加的监听器将无法被支撑等等,详细的适配还请我们去阅览官方文档细细探究。

三. Kotlin/Native下拜访常量不再初始化目标

Kotlin1.9.0-Beta,它来了!!

在讲解这个前,咱们先了解Kotlin/JVM拜访类中常量会导致类被创立初始化吗?看下面一段代码:

    object MyObject {
        init {
            println("side effect!")
        }
        const val y = 1
    }

然后进行第一次调用:

    fun main() {
        println(MyObject.y)
    }

输出的成果为:

Kotlin1.9.0-Beta,它来了!!

然后进行第2次调用:

    fun main() {
        val x = MyObject
        println(x.y)
    }

输出成果为:

Kotlin1.9.0-Beta,它来了!!

经过上面的运转成果可知,Kotlin/JVM拜访常量并不会导致类被初始化创立。而在Kotlin/Native下,相同的代码运转成果就不会相同了。

在Kotlin插件版别1.9.0-Beta之前,Kotlin/Native拜访常量就会导致类被初始化创立,咱们仍是拿上面的比如进行讲解。

PS:想要搭建一个简略的Kotlin/Native开发环境,能够参阅官方文档:Create a new Kotlin/Native project in IntelliJ IDEA

将下面代码经过Build Project构建成一个exe文件:

Kotlin1.9.0-Beta,它来了!!

输出的exe后缀文件途径在:

Kotlin1.9.0-Beta,它来了!!

进入到该目录并运转./KNTest.ext

Kotlin1.9.0-Beta,它来了!!

能够看到,咱们仅仅拜访了MyObject中的常量y,就直接导致MyObject类目标被初始化创立了,这个体现看起来有些糟糕。

所以在Kotlin插件1.9.0-Beta版别,官方对这个进行了优化,Kotlin/Native端拜访类中常量,不会再导致类被初始化了,即上面的“side effect!”不会被输出。这样使得Kotlin/Native和Kotlin/JVM的行为保持一致,一起也潜在的对Kotlin/Native一些场景下的性能体现发生积极影响。

四. 新增createParentDirectories()创立父级目录

Kotlin1.9.0-Beta,它来了!!

这个比较简略,便是官方引入了一个新的api:createParentDirectories()该api会检测文件途径的父级目录是否存在,如果不存在就会进行创立

看一个简略的比如:

    fun main() {
        val path = Path("F:\KotlinPlay\test1\test11\test111.txt")
        path.createParentDirectories()
    }

运转上面代码,就会在我的项目下帮我创立test1和test11这两个原本不存在的目录:

Kotlin1.9.0-Beta,它来了!!

请记住,这个api并不会协助你创立文件,仅仅会创立不存在的父级目录。

五. K2新编译器的更新

Kotlin1.9.0-Beta,它来了!!

对应Kotlin新编译器笔者了解不多,不过想想最起码会对咱们项目的编译功率提高肯定是有协助的,以及还会支撑各种牛逼的特性。

给我们引荐一篇程序员张同学写的一篇文章,能让你对K2编译器有个基本大致的了解:K2 编译器是什么?国际第二高峰又是哪座?

总结

本篇文章首要介绍了kotlin 1.9.0-Beta插件版别新增的一些特性,其实还有几个特性没进行提及,首要是要么没啥介绍的必要,要么我也不懂(比如和iOS相关的特性)。期望本篇文章能对你有所协助。

历史文章

这儿是我整理的过往kotlin特性介绍的历史文章,我们感兴趣能够阅览下:

聊聊Kotlin1.7.0版别供给的一些特性

聊聊kotlin1.5和1.6版别供给的一些新特性

kotlin密封sealed class/interface的迭代之旅

优化@BuilderInference注解,Kotlin高版别下了这些“棘手”!

@JvmDefaultWithCompatibility优化小技巧,了解一下~

参阅文章

What’s new in Kotlin 1.9.0-Beta

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。