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

Latest commit

 

History

History
99 lines (78 loc) · 2.99 KB

The Great Syntactic Shift.md

File metadata and controls

99 lines (78 loc) · 2.99 KB
title date author tags keywords categories reward reward_title reward_wechat reward_alipay source_url translator translator_url
[译]The Great Syntactic Shift
2012-01-04 01:38:00 -0800
Andrey Breslav
官方动态
false
Have a nice Kotlin!

随着 Kotlin 的第一次公开预览即将到来(将于 2012 年 1 月 10 日公布,这是不到一周从现在开始!),我们正在把一些事情按顺序排列 特别是,我们回顾了语言中提供的语法形式,并决定改变一些。这些更改与旧的语法不兼容,我们已经迁移了所有的测试数据,并将更新 公开的文件 不久。 我想指出,这不是这种最后一个变化。Kotlin 还没有发布,直到我们不断收集反馈意见,有时候会发现有些事情需要改变。因此,在 1.0 之前没有向后兼容性保证。我们意识到向后兼容性是多么的重要,但是我们最好能够根据真实人群的需求创建一个非常好的设计。 以下是我们所做的更改的概述
命名空间已经死了。长期使用套餐。 命名空间的概念演变成如此接近 Java 包的东西,我们决定重命名它。 名称空间关键字替换为关键字。另外,不再支持命名空间块箭头失去重量 在**表达式中,功能文字中使用了一个箭头,**使用箭头。某些语言使用“胖箭头”(=>),有些则使用“薄箭头”( - >)。最初,我们使用了胖子,但是与比较有一些不幸的相互作用,像这样:

{% raw %}

{% endraw %}
  val higherThanY  = {x => y <= x}

{% raw %}

{% endraw %}

所以我们决定切换到一个很薄的箭头:

{% raw %}

{% endraw %}
  val higherThanY  = {x -> y <= x}

{% raw %}

{% endraw %}

更易读的功能类型 在旧的语法中,我们编写了如下的函数类型:

{% raw %}

{% endraw %}
val f : fun(Int) : String

{% raw %}

{% endraw %}

这与 Kotlin 的函数声明语法非常接近,似乎完全符合逻辑。不幸的是,随着这个功能开始与他人互动,事情变得更糟:

{% raw %}

{% endraw %}
fun max(col : Collection<Int>, compare : fun(Int, Int) : Int) : Int

{% raw %}

{% endraw %}

你在冒号迷路了吗?我也是… 因此,我们决定将函数类型语法更改为以下内容:

{% raw %}

{% endraw %}
fun max(col : Collection<Int>, compare : (Int, Int) -> Int) : Int

{% raw %}

{% endraw %}

还有一点 此外,我们在类型中引入了可选括号,将元组语法更改为与括号化表达式列表区分开来,并进行了一些次要(向后兼容)更改。所有这一切将很快反映在文档中。像往常一样,您的反馈非常受欢迎。 敬请关注,下周二不要错过公告!