Я не совсем понимаю последний кусок 'type'. Где это находится?
Это то, что Scala обозначает "Singleton Type" . Nil
и Sample
имеют общее свойство быть объектами в Scala, что означает, что они являются классами с одним экземпляром (учитывая, что это объявление верхнего уровня, а не вложенное в class
внутри данного пакета объем). Это часть определения типа, но она не видна на сайте декларации. Подробнее об использовании синглтон-типа см. Что такое синглтон-тип точно?
Как мы можем написать объект, который возвращает что-то?
Написание object
, возвращающего что-то, похоже на вопрос «Могу ли я создать класс, который возвращает значение при создании экземпляра?» . object
являются синглетонами и могут иметь методы, которые возвращают значения:
object Bar {
def x(): Int = 42
}
def main(args: Array[String]): Unit = print(Bar.x())
Что дает 42
.
Редактировать
Тем не менее я не Очистим одноэлементный объект Nil, возвращая пустой список
Если мы сможем упростить и подражать c определению List[A]
, мы увидим, что:
sealed trait List[+A]
case class ::(head: A, tail: List[A]) extends List[A]
case object Nil extends List[Nothing]
Здесь мы имеем Algebrai c Тип данных (ADT), точнее, Sum Type, который представляет собой тип, состоящий из нескольких возможных значений. Здесь List[A]
может быть или a ::
, или Nil
, и в нашем случае это представляет случай пустого списка.