Я думаю, что приведенный ниже код лучше всего описывает мою проблему:
import scala.collection.mutable.Set
case class CrazyClass(i: Int) {
override def toString: String = s"CrazyClass[ i=$i ]"
CrazyClass.registeredClasses += this
}
object CrazyClass extends App{
val registeredClasses = Set[CrazyClass]()
CrazyClass(1); CrazyClass(2)
registeredClasses.foreach(println(_))
}
Это печатает, как и ожидалось:
CrazyClass[ i=2 ]
CrazyClass[ i=1 ]
Но если я попробую это с объектом, который простирается от CrazyClass
, объект не регистрируется автоматически:
object CrazyExtendedObject extends CrazyClass(4) {
def something = 2
}
Вывод с добавленным кодом все тот же, что и выше.Если я добавлю нормальный расширенный класс следующим образом, все будет работать правильно:
class CrazyExtendedClass(i: Int) extends CrazyClass(i)
Каждый экземпляр нового класса будет зарегистрирован.
Так, как я могу достичь того же результата на объекте?