Kotlin 1.1版本新特性

作者: kotlin 发布时间: 2019-08-09 浏览: 1928 次 编辑

JavaScript的

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

协调(实验)

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

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

我们来看看async/">https://kotlinlang.org/docs/reference/coroutines.h...

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()时,在等待完成的操作被执行的同时执行协议程序的执行被暂停,并被恢复(可能在不同的线程上)。

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