Ich war neugierig auf die Auswirkung, keinen expliziten primären Konstruktor in Scala zu haben, nur den Inhalt des Klassenkörpers.Privater und geschützter Konstruktor in Scala
Insbesondere vermute ich, dass das private oder geschützte Konstruktormuster, das heißt, die Konstruktion durch das Companion-Objekt oder die Methoden einer anderen Klasse oder eines anderen Objekts zu steuern, möglicherweise keine offensichtliche Implementierung hat.
Bin ich falsch? Wenn ja, wie wird es gemacht?
Sie könnten eine Scala Singleton (mit dem Objektschlüsselwort, das ist), und definieren Sie Ihre Klasse als private innerhalb dieser Singleton und Methoden des Singleton zum Konstruieren Ihrer Objekte. – Paggas
@Paggas, leider, wenn Sie eine Instanz einer Klasse zurückgeben, die als privat markiert ist, wird sie nicht kompiliert, selbst wenn sie von einer Methode zurückgegeben wird, die sich in ihrem Begleitobjekt befindet. –
Dies ist im gesamten Scalaz-Quellcode ziemlich umfangreich. Das Konzept wird auch als * abstract * algebraischer Datentyp bezeichnet. –