Wofür kann ich scala.Singleton verwenden?

8

Zur Klarstellung: Ich frage NICHT, wofür ich ein Singleton Designmuster verwenden kann. Die Frage bezieht sich auf eine weitgehend undokumentierte Eigenschaft, die in scala bereitgestellt wird.

Für was ist dieses Merkmal? Der einzige konkrete Anwendungsfall, den ich bisher finden konnte, bestand darin, eine Eigenschaft nur auf Objekte zu beschränken, wie in dieser Frage zu sehen ist: Ein Merkmal auf Objekte beschränken?

Diese Frage wirft etwas Licht auf das Problem Ist scala.Singleton reiner Compiler fiction? , aber es gab natürlich auch einen anderen Anwendungsfall!

Gibt es einen offensichtlichen Nutzen, an den ich nicht denken kann, oder sind es hauptsächlich nur Compilermagie?

    
Zavior 20.08.2014, 15:05
quelle

1 Antwort

1

Ich denke, die Frage wird von Martin Oderskys Kommentar zum Mailinglisten-Thread beantwortet verknüpft mit der verknüpften Frage:

  

Der Typ Singleton ist im Wesentlichen ein Encodiertrick für Existenziale   mit Werten. Ie.

%Vor%      

wird in

umgewandelt %Vor%      

Singleton-Typen werden normalerweise nicht direkt verwendet ...

Mit anderen Worten, es gibt keine beabsichtigte Verwendung, die über die Steuerung der Typer-Phase des Compilers hinausgeht. Die Scala Language Specification hat dieses Bit in §3.2.10, auch §3.2 .1 gibt an, dass diese Eigenschaft vom Compiler verwendet werden kann, um zu erklären, dass ein Typ stabil ist.

Sie können dies auch mit dem folgenden sehen (Scala 2.11):

%Vor%

Sie können dieses Merkmal also nicht einmal in einem aussagekräftigen Test verwenden.

( Dies ist keine definitive Antwort, nur meine Beobachtung )

    
0__ 20.08.2014, 16:06
quelle

Tags und Links