为什么kotlin放弃“新”关键字?

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

3 Solutions collect form web for “为什么kotlin放弃“新”关键字?”

Kotlin编码公约明确规定:

  • 使用camelCase作为名字(并且避免使用名字下划线)
  • types以大写字母开始
  • 方法和属性以小写开头

如果您按照上面的说法, constructor视为可调用的常规函数 ,即val invoice = Invoice()new关键字将变为多余的 。 一旦你习惯了这个习惯,很清楚代码在做什么。

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

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

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

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

其他几种语言没有new关键字(Python,Scala,也许Ceylon),而那些已经改用这些语言的人似乎从来没有错过它。 我知道我不知道

  • Kotlinic模式使用Spring Data JPA的“查询范例”
  • Kotlin的mapTo()会覆盖数组中的数据吗?
  • 如何检测Data class Kotlin中更改的值?
  • 安装Kotlin Android项目失败INSTALL_FAILED_DEXOPT
  • 我怎样才能使用回报,而不是让Kotlin?
  • 如何在Kotlin for Android上使用“setTextColor(hexaValue)”,
  • 我如何在Kotlin中无限重复一个序列?
  • Kotlin语言在运行时获得类
  • 如何将kotlin-js-library更新为1.1.3,就像kotlin-gradle-plugin一样?
  • 如何在Kotlin中创建一个线程池
  • 如何解决:错误:执行失败的任务':app:kaptDebugKotlin'?
  • Kotlin language will be the best programming language for Android.