为什么kotlin放弃“新”关键字?
为什么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),而那些已经改用这些语言的人似乎从来没有错过它。 我知道我不知道