BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Kotlin 1.1路线图

| 作者 Sergio De Simone 关注 17 他的粉丝 ,译者 谢丽 关注 11 他的粉丝 发布于 2016年6月13日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Kotlin的开发正向着1.1版本迈进;Kotlin语言主要设计者Andrey Breslav介绍了JetBrains这门JVM语言新版本的路线图,该版本会包含重大的新语言特性。

Kotlin 1.1将提供以下新语言特性。

  • 类型别名旨在为比较长的类型声明提供一种缩写机制,比如函数签名;类型别名不会引入新的类型,可以与原始定义互换使用。
  • 扩展绑定方法引用,支持引用对象成员。这样,你就可以引用String对象的equals方法,并赋给一个Predicate对象供后续使用:val p: Predicate<String> =“foo”::equals。Kotlin 1.0.x已经支持类型引用。
  • 允许在类或函数的最顶层定义委托属性
    fun foo() {
      val lazyBar by lazy { ... }
      while (...) {
        if (...) {
          lazyBar.doBaz()
          ...
        }
      }
    }
    

    委托属性提供了一种机制,可以一次性实现所有像lazy、observable和map-stored这样的特定类型的属性,这样就不需要每次都实现它们。
  • 数据类将支持继承,这就提供了从另外一个类派生出一个数据类的可能。数据类是那些只包含数据的类,Kotlin会自动生成存取器、equalshashCode和其他通用方法。这还提供了在一个密封类中扩展数据类的可能:
    sealed class C() {
      data class Example(...) : C()
    }
    
  • 解构允许为lambdas参数传递组合名称,参见下面的例子,forEach的键值对参数解构成了两个部分:
    myMap.forEach {
      (k, v) ->
        println(“$k => $v”)
    }
    
  • coroutines是Kotlin异步行为的基础。据Breslav介绍,coroutines比C# 5引入的async/await模型更一般化。Kotlin也将提供async/await,但是以coroutines为基础构建,而不是作为原语:
    fun loadImage(url: URL) = async {
      val bytes = await(loadBytes(url))
      bytesToImage(bytes)
    }
    

在工具方面,Kotlin 1.1将直接支持Java 8/9特性,如默认方法生成。此外,JavaScript后端将与实际的语言功能集保持一致。

Kotlin的开发由Kotlin Evolution and Enhancement Process(KEEP)推动,并依托一个GitHub库描述了所有计划的应用场景。

Kotlin 1.1的源代码和二进制文件都兼容以前的版本,也就是说,新版本的Kotlin编译器不会破坏同旧源代码和二进制文件的兼容性。

查看英文原文The Roadmap to Kotlin 1.1

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT