Мне было любопытно, как влияет отсутствие явного первичного конструктора в Scala, а только содержимое тела класса.
В частности, я подозреваю, что частный или защищенный шаблон конструктора, то есть управляющий построением через сопутствующий объект или другой класс или методы объекта, может не иметь очевидной реализации.
Я ошибся? Если да, то как это делается?
У вас может быть синглтон Scala (то есть с ключевым словом object), и вы можете определить свой класс как частный в этом синглтоне и иметь методы синглтона для создания ваших объектов.
—
Paggas
@Paggas, к сожалению, когда вы возвращаете экземпляр класса, помеченного как частный, вне его области видимости, он не компилируется, даже когда он возвращается из метода, находящегося в объекте-компаньоне области.
—
Don Mackenzie
Это делается довольно часто в исходном коде Scalaz. Эта концепция также известна как абстрактный алгебраический тип данных.
—
Тони Моррис