Является ли scala.Singleton чистой выдумкой для компиляторов? - PullRequest
7 голосов
/ 25 мая 2011

В спецификации языка Scala указано в §3.2.1:

Стабильный тип - это либо одноэлементный тип, либо тип, который объявлен подтипом признака scala..Singleton.

Я не смог найти scala.Singleton ни в источниках, ни в ScalaDoc, ни в двоичном файле jar.

Попытка REPL приводит к:

scala> class Foo extends Singleton
<console>:9: error: illegal inheritance from final trait Singleton
       class Foo extends Singleton
                         ^
<console>:9: error: illegal inheritance; superclass Any
 is not a subclass of the superclass Object
 of the mixin trait ScalaObject
       class Foo extends Singleton
                 ^

Где живет scala.Singelton и какова его цель?

1 Ответ

9 голосов
/ 25 мая 2011

Наконец-то нашел что-то по этому поводу:

Тип Singleton по сути трюк кодирования для существования с ценности. То есть

T forSome { val x: T } 

превращается в

[x.type := X] T forSome { type X <:T with Singleton } 

Источник: http://scala -programming-language.1934581.n4.nabble.com / scala-Singleton-td1940630.html

...