title | date | author | tags | keywords | categories | reward | reward_title | reward_wechat | reward_alipay | source_url | translator | translator_url |
---|---|---|---|---|---|---|---|---|---|---|---|---|
[译]M7 Release Available |
2014-03-19 17:00:00 -0700 |
Hadi Hariri |
官方动态 |
false |
Have a nice Kotlin! |
Kotlin M7 在这里和它一些期待已久的功能。
M7 的最大特点之一是支持内联功能。 Kotlin 鼓励使用高阶函数(有些人称之为“功能性样式”),这需要大量使用 lambda 表达式。从 M7 开始,您可以将更高阶的函数声明为“内联”,这意味着它的正文将在调用站点以及传递给它的任何 lambdas 内联。这意味着使用这些功能的性能损失是无关紧要的。例如,使用**循环而不是使用forEach并传递一个 lambda 在速度方面几乎没有区别。
内联提供的优点包括生成的类的数量,字节码大小,更少的分配和更少的变形调用,所有这些都有助于这些性能提升。
Kotlin 标准库的许多功能现在已经被列入了。
注意:如果内联中断代码(例如由于编译器错误),可以通过将 -inline off 命令行选项传递给编译器来关闭它(请参阅首选项 - >编译器 - > Kotlin 编译器):
{% raw %}
{% endraw %}当声明toString(),equals()和hashCode()时,我们现在需要使用覆盖关键词。这是以前版本中的突破性变化,适用于所有类。使用 IDE 中提供的快速修复(Alt + Enter 错误)快速添加“覆盖”到项目中的所有这些方法。
核心类已被重命名为“kotlin”,这也意味着,是的,你猜到了,Kotlin 现在是 Kotlin 的官方和最终名字。这也是一个潜在的破坏性变化。大多数进口将自动发生。如果遇到任何问题,请手动重命名导入。
在 Kotlin 中,您可以使用*:: functionName*语法通过名称引用函数。这也适用于本地功能
{% raw %}
{% endraw %}fun foo() {
fun bar() {
}
fun biz(func: () -> Unit) {
}
biz(::bar)
}
{% raw %}
{% endraw %}现在,您可以使用throws注释来装饰函数,以指示当编译为 JVM 时该函数应声明哪些异常。
{% raw %}
{% endraw %}[throws(javaClass<SocketException>()]
fun connect(host: String) {
...
}
{% raw %}
{% endraw %}将被翻译成
{% raw %}
{% endraw %}void connect(String host) throws SocketException {
...
}
{% raw %}
{% endraw %}在 Java 中。
您现在可以提供重载函数并将其编译为 JavaScript。 Kotlin 使用后缀_1,_2 等创建新的函数。
{% raw %}
{% endraw %} foo: function () {
},
foo_1: function (param) {
},
foo_2: function (param, anotherParam) {
}
{% raw %}
{% endraw %}此外,JavaScript 本机功能还允许将扩展文字作为参数传递。
标准图书馆正在重新加工。这包括引入流(除其他外,这将有助于更好地与 Java 8 的兼容性)和某些功能的弃用。 某些重新设计已导致库 API 破坏****。大多数功能仍然可用,但您可能需要稍微修复现有代码。
当从一个文件复制和粘贴代码到另一个文件时,IntelliJ IDEA 将自动导入所需的任何软件包。
查找用途现在涵盖本地课程。此外,您现在可以看到覆盖以及这些的分层视图。
增强代码完成功能,支持枚举,Java 静态成员以及匿名对象。
{% raw %}
{% endraw %}某些重命名重构(如局部变量)现在可以在现场完成,而无需使用对话框。
{% raw %}
{% endraw %}您现在可以安全地删除整个项目中未使用的符号,并使用安全删除重构
现在支持所有导入的软件包重命名和相应的更新
{% raw %}
{% endraw %}当执行 Java 代码的移动重构时,它现在更新 Kotlin 代码中的相应用法。
此版本还为 IntelliJ IDEA 带来了一系列意向,其中包括:
安全访问操作员或者 elvis 操作员现在可以用更明确的方式替换,如果需要,只需简单地使用意图即可。
{% raw %}
{% endraw %}Infix 呼叫可以转换为点限呼叫
{% raw %}
{% endraw %}能够使用简单的 return 语句将函数转换为表达式
{% raw %}
{% endraw %}当我们在字符串模板中有变量名时,我们可以轻松添加或删除大括号
{% raw %}
{% endraw %}除了上述之外,还有
- 支持 IntelliJ IDEA 13.1 和 Android Studio
- 通过懒惰分析进行性能改进,导致与 Java 的更好的互操作速度。
- 改进的 Java2Kotlin 转换器,导致更清晰的代码,并包括更好的复制/粘贴行为。
- 代码格式化程序的改进
另外还有一些其他错误修复和功能
- 改进的控制流分析导致修复一些现有的错误。
- 更多的 bootstrapping。我们在 Kotlin 使用越来越多的 Kotlin。
- 对 Kotlin 标准库进行了一些改进。
我们可以找到编译器和插件 GitHub 上的发行页面 。
如果您使用 IntelliJ IDEA,您可以从中下载最新的插件 我们的存储库 或者通过 IntelliJ IDEA 中的插件直接更新。 Kotlin M7 需要 IntelliJ IDEA 13.1。