Предположим следующую пару классов:Проверка полученные аргументы класса в Scala
class A(arg:String)
class B(argList:Vector[String]) extends A(argList.first)
Я хочу, чтобы иметь возможность проверить argList
порожняком, прежде чем предоставлять конструктор базового класса с первым элементом. К сожалению, размещение этой проверки в конструкторе по умолчанию для B
(например, через require
, как показано here) является слишком запоздалым, так как сначала нужно вызвать конструктор базового класса.
Это, вероятно, более общий вопрос ООП, но решение, скорее всего, будет специфичным для Scala.
В Java, делать что-либо в конструкторе до вызова супер конструктор дает ошибку во время компиляции. Другими словами, суперконструктор ** должен быть первым утверждением в дочернем конструкторе (он называется неявным, если опущен). Я не думаю, что в Scala есть обходной путь. Это решение Java. –