У меня есть абстрактный базовый класс, Foo, конструктор которого я бы хотел иметь необязательный параметр. Если ни один не предоставлен, я просто дам ему значение None
.Как я могу расширить абстрактный класс с необязательным членом в Scala?
Источник Foo не будет иметь родитель, так что я бы хотел, чтобы построить их без списка родителей (значения по умолчанию для отпуска родительского списка)
производного Foo мог бы обеспечить родитель, поэтому я например, для имитации сигнатуры базового класса Foo.
Ниже моя попытка:.
abstract class Foo(val id: String, var parentIds: Option[List[String]]=None) { }
case class SourceFoo(override val id: String)
extends Foo(id, parentIds=None) { }
case class DerivedFoo(override val id: String,
override var parentIds: Option[List[String]])
extends Foo(id, parentIds) { }
Я получаю ошибку компиляции, что изменчивая переменная не может быть преодолено (ссылающийся на parentIds
в DerivedFoo
конструктор
Этот список может изменяться, поэтому я не хочу делать это val
(что устраняет мои проблемы с компилятором).
Это очень простая проблема с OO, поэтому она должна быть проще, чем я, кажется, это сделать. Как я могу достичь желаемогоповедение идиоматично?
Yep хорошо, только что увидел, что ты прав –