Skip to content

Latest commit

 

History

History
121 lines (95 loc) · 4.44 KB

Kotlin 1.0 Beta 2 is Out!.md

File metadata and controls

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

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

语言变化

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

{% 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)</ code>”或“ for(i in 1..10)</ code>”保持不变,但在引擎盖下进行了一些重命名和层次重构:

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

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

{% 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.dom </ code>和 kotlin.browser </代码>到 kotlinx.dom </ code>和 kotlinx.browser </ code>)。否则,库的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第二次: