Wann sollte ich ein Paket und wann ein Objekt in Scala verwenden?

8

Was ist der Unterschied zwischen Paket und Objekt?

    
Łukasz Lew 09.05.2010, 00:24
quelle

2 Antworten

9

Pakete sind keine Laufzeitobjekte, Objekte sind. Sie sollten Pakete verwenden, um die Hierarchie Ihres Codes und Objekte zu organisieren, wann immer Sie etwas zum Speichern von Code oder Daten benötigen (vorausgesetzt, dass Klassen und Instanzen natürlich nicht besser sind).

    
Daniel C. Sobral 09.05.2010, 01:48
quelle
4

Um ein bisschen zu hinzuzufügen Daniels Antwort :

Aus den Scala-Spezifikationen :

Objekte

  

Klassen (§5.3) und Objekte (§5.4) sind beide in Form von Vorlagen definiert.
  Eine Vorlage definiert die Typensignatur, das Verhalten und den Anfangszustand eines Merkmals oder einer Klasse von Objekten oder eines einzelnen Objekts.

     

Es kann haben:

     
  • lokale Modifikatoren (' abstract ', ' final ', ' sealed ', ' implicit ', ' lazy ')
  •   
  • Zugriff geändert (' private ' | ' protected '),
  •   
  • Zugriffsqualifizierer (' this ')
  •   

Eine Objektdefinition definiert ein einzelnes Objekt einer neuen Klasse (oder: Modul ), das der Vorlage t entspricht.
  Es entspricht ungefähr den folgenden drei Definitionen, die zusammengenommen werden   Definieren Sie eine Klasse und erstellen Sie ein einzelnes Objekt dieser Klasse bei Bedarf:

%Vor%

Ein Objekt kann einen für andere Klasseninstanzen gemeinsamen Code isolieren. Eine spezifische Verwendung:

  

Klassen in Scala haben keine statischen Mitglieder; Ein entsprechender Effekt kann jedoch durch eine begleitende Objektdefinition erreicht werden.
  Im Allgemeinen ist ein begleitendes Modul einer Klasse ein -Objekt, das denselben Namen wie die Klasse hat und im selben Bereich und in derselben Kompilierungseinheit definiert ist.   Umgekehrt heißt die Klasse Companion-Klasse des Moduls.

Pakete

Ein Paket ist Teil der Kompilierungseinheit .

  

Eine Kompilierungseinheit besteht aus einer Abfolge von Verpackungen, Importklauseln und einer Klasse   und Objektdefinitionen, denen eine Paketklausel vorangestellt sein kann.

     

Ein Paket ist ein spezielles Objekt, das eine Menge von Mitgliedsklassen, Objekten und definiert   Pakete.

     

Im Gegensatz zu anderen Objekten dürfen Pakete nicht als Werte verwendet werden. Es ist illegal, ein Paket mit demselben vollständig qualifizierten Namen wie ein Modul oder eine Klasse zu haben.
  Es wird angenommen, dass Definitionen auf oberster Ebene außerhalb einer Verpackung in ein spezielles Dokument eingefügt werden   leeres Paket. Dieses Paket kann nicht benannt werden und kann daher nicht importiert werden.

     

Der spezielle vordefinierte Name _root_ bezieht sich auf das äußerste Root-Paket, das   enthält alle Pakete der obersten Ebene.

Also:

  • Objekt organisiert Code, der von einer eindeutigen Laufzeitinstanz ausgeführt wird.
  • Paket deklarieren Code-Namespace für den Kompilierungsschritt.
VonC 09.05.2010 00:55
quelle

Tags und Links