Kotlin 1.1版本新特性

目录

JavaScript的

从Kotlin 1.1开始,JavaScript目标不再被认为是实验性的。支持所有语言功能,还有许多新工具可用于与前端开发环境集成。有关更改的更详细列表,请参阅下文

协调(实验)

在科特林1.1的主要新功能是协同程序,带来的支持async/ awaityield和类似的编程模式。Kotlin设计的关键特征是协同执行的实现是库的一部分,而不是语言,所以你不必受任何特定的编程范例或并发库的约束。

协同实际上是一个轻质线,可以暂停和恢复。通过挂起功能支持协调程序:调用这样的函数可能会暂停协同程序,并启动一个新的协同程序,我们通常使用匿名挂起函数(即挂起lambdas)。

我们来看看async/ await这是在外部库中实现的,kotlinx.coroutines

// runs the code in the background thread pool
fun asyncOverlay() = async(CommonPool) {
    // start two async operations
    val original = asyncLoadImage("original")
    val overlay = asyncLoadImage("overlay")
    // and then apply overlay to both results
    applyOverlay(original.await(), overlay.await())
}

// launches new coroutine in UI context
launch(UI) {
    // wait for async overlay to complete
    val image = asyncOverlay().await()
    // and then show it in UI
    showImage(image)
}

在这里,async { ... }启动协同程序,当我们使用await()时,在等待完成的操作被执行的同时执行协议程序的执行被暂停,并被恢复(可能在不同的线程上)。

标准库使用协同程序,以支持懒惰地产生的序列yieldyieldAll功能。在这样的序列中,返回序列元素的代码块在每个元素被检索之后被暂停,并且当请求下一个元素时被恢复。这里有一个例子:

分类Kotlin概述相关推荐:

Kotlin简介 Kotlin进行服务端开发 Kotlin在Android中的开发 Kotlin在JavaScript中的概述 Kotlin 1.1版本新特性