Warum hat kotlin das Schlüsselwort "new" fallen lassen? [geschlossen]

9

Warum hat kotlin das neue Keyword gelöscht? Es macht es schwieriger, den Unterschied zwischen einem Funktionsaufruf und einer Objektzuordnung zu sehen.

    
user2922073 20.01.2016, 01:07
quelle

3 Antworten

13

Die Kotlin Kodierungskonventionen stellen klar fest:

  
  • Verwendung von camelCase für Namen (und Unterstrich in Namen vermeiden)
  •   
  • -Typen beginnen mit Großbuchstaben
  •   
  • Methoden und Eigenschaften beginnen mit Kleinbuchstaben
  •   

Wenn Sie den obigen Anweisungen folgen und constructor als reguläre Funktion behandeln , die aufgerufen werden kann, d. h. val invoice = Invoice() , wird das Schlüsselwort new zu redundant . Sobald Sie sich mit der Konvention vertraut gemacht haben, ist klar, was ein Code tut.

Tatsächlich haben Sie sogar im Java-Code viele implizite Zuordnungen, die direkt unter einem Methodenaufruf wie Collections.singleton(o) oder Guavas Lists.newArrayList() Ich glaube also nicht, dass Ihre Argumentation über die Sichtbarkeit der Zuordnung mit dem Schlüsselwort new voll gültig ist.

    
miensol 20.01.2016, 06:16
quelle
10

(IMO) Es wurde gemacht, weil es KEINEN echten Unterschied zwischen Funktionen und Objektkonstruktion gibt, d. h. nichts hindert eine Funktion daran, ein Objekt zuzuweisen (was sie oft tun).

Ein gutes Beispiel sind Factory-Funktionen. Diese Funktionen erstellen neue Objekte, aber sie sind in keiner Weise Klassenkonstruktoren.

AFAIK, das Schlüsselwort new wurde aufgrund einer negativen Erfahrung mit C \ C ++ erstellt, wobei Funktionen, die neue Objekte zurückgeben, speziell markiert werden müssen (durch Namenskonventionen), um nicht (manuell) die Erinnerung. In einer Auto-Memory-Management-Sprache wie Java \ Kotlin ist dies kein Problem.

    
voddan 20.01.2016 06:25
quelle
3

Einige andere Sprachen haben kein new Schlüsselwort (Python, Scala, vielleicht Ceylon) und Leute, die zu diesen Sprachen gewechselt haben, scheinen es nie zu verpassen. Ich weiß, dass ich es nicht weiß.

    
Jacob Zimmerman 20.01.2016 12:19
quelle

Tags und Links