为什么kotlin放弃"新"关键词?

时间:2016-01-20 01:07:06

标签: kotlin

为什么kotlin会删除关键字? 这使得查看函数调用和对象分配之间的区别变得更加困难。

3 个答案:

答案 0 :(得分:16)

Kotlin Coding Conventions明确指出:

  
      
  • 使用camelCase作为名称(并避免使用名称中的下划线)
  •   
  • 类型以大写字母开头
  •   
  • 方法和属性以小写字母开头
  •   

如果您按照上述内容并constructor视为常规功能,可以调用val invoice = Invoice() new关键字变为冗余。 一旦你适应了约定,就可以清楚地看到代码正在做什么。

事实上,即使在Java代码中,您也会有很多隐式分配发生在Collections.singleton(o)或Guava Lists.newArrayList()之类的方法调用之下,所以我不认为你使用new关键字更好地分配可见性的论点是完全有效的。

答案 1 :(得分:12)

(IMO)这样做是因为函数和对象构造之间没有真正的区别,即没有什么能阻止函数分配对象(他们经常这样做)。

一个很好的例子是工厂功能。这些函数创建了新对象,但它们绝不是类构造函数。

AFAIK,new关键字是因为C \ C ++的负面体验而创建的,其中返回新对象的函数必须经过特殊标记(按名称约定),以免忘记(手动)释放记忆。在像Java \ Kotlin这样的自动内存管理语言中,它不是一个问题。

答案 2 :(得分:3)

其他几种语言没有new关键字(Python,Scala,也许是锡兰),而且切换到这些语言的人似乎从未错过它。我知道我不会。