Являются ли зависимые от пути типы проекциями типов?

Сейчас я внимательно изучаю Scala. Вот выдержка из книги:

Все типы, зависящие от пути, являются проекциями типов. Зависящий от пути тип foo.Barпереписан. как foo.type#Barкомпилятором...

В Scala все ссылки на типы могут быть записаны как проекты для именованных сущностей. Тип scala.String является сокращением для scala.type#String, где имя scalaотносится к пакету scala, а тип Stringопределяется классом Stringв пакете scala.

Очевидно, что класса scala.Stringне существует, но мне не удалось воспроизвести это с помощью Null.

scala> type N = scala.type#Null
<console>:7: error: type mismatch;
 found   : type
 required: AnyRef
       type N = scala.type#Null

Итак, мои вопросы таковы. Являются ли зависимые от пути типы проекциями типов? Это просто внутреннее представление компилятора или его можно выразить в коде Scala?

8
задан 4e6 11 May 2012 в 15:48
поделиться