Skip to content
This repository has been archived by the owner on Apr 13, 2023. It is now read-only.

Latest commit

 

History

History
120 lines (94 loc) · 4.36 KB

Kotlin 1.0 Beta 2 is Out!.md

File metadata and controls

120 lines (94 loc) · 4.36 KB
title date author tags keywords categories reward reward_title reward_wechat reward_alipay source_url translator translator_url
[译]Kotlin 1.0 Beta 2 is Out!
2015-11-16 13:01:00 -0800
Andrey Breslav
官方动态
false
Have a nice Kotlin!

我们的第一次更新 测试版 在这儿!我们正在稳定,所以它主要是错误修复和标准库的更改。

语言变化

我们现在对类型参数强制执行单实例继承约束:相同的T不能同时具有List< Int>List&lt ; String>作为其上限。对于类,这一直被禁止,现在对类型参数也是一样的。 智能演员不可能的情况下,诊断有所改善:

{% raw %}

{% endraw %}
class C {
    var x: String? = ""
    fun foo(): String {
        if (x != null) return x // ERROR: smart cast to String is impossible,
                                // because 'x' is a member variable
    }
}

{% raw %}

{% endraw %}

此外,编译器现在足够聪明,可以在特定时点值始终为空时提醒我们:

{% raw %}

{% endraw %}
    var x: Foo? = ...
    if (x != null) return
    x?.bar() // WARNING: bar() will never run, because x is always null here

{% raw %}

{% endraw %}

图书馆更改

我们清理标准库的 API。这个时间关系范围最明显的变化。我们打算使用常见的用例,例如“if(x in 1..10)”或“for(i in 1..10)”保持不变,但在引擎盖下进行了一些重命名和层次重构:

  • 双重和浮动进度被丢弃
  • 字节和短进度已被弃用,字节和短路的..运算符现在返回 IntRange
  • 范围重命名为 ClosedRange ,其 end 属性重命名为 endInclusive
  • Progression 不利于具体的进阶实现:IntProgression,LongProngession,CharProgression
  • 开始和结束属性被重命名为第一个和最后一个

然后,字符串的实用程序扩展被广义化以在可能的情况下与CharSequence一起使用。 现在,filterIsInstance扩展名需要明确规定其类型参数:

{% raw %}

{% endraw %}
foo(list.filterIsInstance()) // error: what is the type the checks are done for?!
foo(list.filterIsInstance<Bar>()) // OK: we are checking for Bar

{% raw %}

{% endraw %}

注意:为了减小运行时库的大小(这对 Android 应用程序尤其重要),我们从标准库中删除了 kotlin.dom 和 kotlin.browser 包。他们现在可以作为一个单独的图书馆, kotlinx.dom 。如果您在项目中使用任何这些软件包,请添加新库作为依赖关系,并更新代码中的 import 语句(更改kotlin.domkotlin.browser </代码>到kotlinx.domkotlinx.browser`)。否则,库的 API 没有改变。 其他变化:

  • 添加

MutableLists 和 Arrays 的就地倒置和排序 naturalOrder 和 reverseOrder 比较器 mapNotNull,mapIndexedNotNull,filterIndexed String.toByte()

  • MutableLists 和 Arrays 的就地倒置和排序
  • naturalOrder 和 reverseOrder 比较器
  • mapNotNull,mapIndexedNotNull,filterIndexed
  • String.toByte()
  • 已弃用(运行代码清理来迁移代码)

功能。发电机 toLinkedList

  • 功能。发电机
  • toLinkedList
  • 掉下来

加入,合并 代表 l y FileTreeWalk.filter,File.recurse,BufferedReader.lines 和 lineIterator 断言,检查和要求与非懒惰的消息参数

  • 加入,合并
  • 代表 l y
  • FileTreeWalk.filter,File.recurse,BufferedReader.lines 和 lineIterator
  • 断言,检查和要求与非懒惰的消息参数

Dokka

Kotlin 项目的新文档生成工具 Dokka 终于达成了全面的发布。 Dokka 支持混合语言项目和理解 KDoc 评论 在 Kotlin 代码和 JavaDoc 中的 Java 代码注释。 Dokka 具有 Gradle,Maven 和 Ant 的插件,因此您可以轻松地将其与项目的构建系统集成。下载 Dokka 并找到更多的信息 Dokka 项目网站

IDE 更改

  • 完成现在适用于 Java 静态成员和对象成员。只需按 Ctrl + Space 第二次: