Kotlin新增协程、类型别名特性,提升了对JavaScript的支持详解手机开发

Kotlin新增协程、类型别名特性,提升了对JavaScript的支持详解手机开发

    一.Kotlin的市场主管Roman Belov撰文写到,Kotlin的新版本引入了多项新的语言特性(其中最值得注意的就是协程),同时还提升了对其JavaScript目标环境的支持.尽管依然被认为处于试验性阶段,但是Kotlin 1.1最关键的新特性之一就是协程(coroutine),这个特性可以通过使用三个高层级的构造(construct)来实现:async、await和yield.举例来说:我们可以采用async和await来处理异步操作:

    //在后台线程池中运行代码

    fun asyncOverlay() = async(CommonPool) {

        //开启两个异步操作

        val original = asyncLoadImage(“original”)

        val overlay = asyncLoadImage(“overlay”)

        //然后,将overlay应用到这两个结果上

        applyOverlay(original.await(), overlay.await())

    }

    //在UI上下文中启动新的协程

    launch(UI) {

        //等待异步overlay完成

        val image = asyncOverlay().await()

        //然后在UI上显示

        showImage(image)

    }

    二.注意,这里使用了launch,它会启动一个协程.实际上,await只能在一个协程中使用或者在使用关键字suspend声明的函数中使用,这样的话,能够让编译器生成相应的代码,从而在协程中运行函数:

    suspend fun workload(n: Int): Int {

        delay(1000)

        return n

    }

    三.在上例中,delay推迟了协程,并不会阻塞它关联的线程.协程还能以懒加载的方式借助yield来生成序列:

    //推断出的类型为Sequence

    val fibonacci = buildSequence {

        yield(1) //第一个Fibonacci数字

        var cur = 1

        var next = 1

        while (true) {

            yield(next) //下一个Fibonacci数字

            val tmp = cur + next

            cur = next

            next = tmp

        }

    }

    println(fibonacci.take(10).joinToString())

    四.因为还是试验性的,协程目前只是选择性使用状态(opt-in),它们的API在未来的释放版本中可能会有所变更.

    五.Kotlin 1.1添加的其他重要的新特性包括:

    1.类型别名,允许用户为某种类型定义其他的名称.

    2.操作符能够获取特定对象某个方法的成员引用.

    3.数据类可以进行扩展.

    4.在lambdas中支持Destructuring.

    六.在对JavaScript的支持方面,1.1版本的主要目标是让对JavaScript的支持能够达到与JVM对等的程度.这意味着,所有的语言特性都可以在这两个目标平台中使用,不过反射除外,目前JavaScript还没有这样的特性.尤其是:

    1.Kotlin标准库中很大一部分都可以用在JavaScript上.

    2.生成的代码对JavaScript工具更加友好,比如压缩器(minifier),优化器(optimizer)等等.

    3.用于Kotlin类声明的external修饰符目前在JavaScript中已经实现了.

Kotlin新增协程、类型别名特性,提升了对JavaScript的支持详解手机开发

转载请注明来源网站:blog.ytso.com谢谢!

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/6139.html

(0)
上一篇 2021年7月17日
下一篇 2021年7月17日

相关推荐

发表回复

登录后才能评论