Есть ли способ в scala использовать промежуточный ранний инициализатор?
Вот что я пытаюсь скомпилировать:
trait A { val valueA: Int = 0 }
trait B {
val valueB: Int
println(valueB)
}
class C extends A with { val valueB = valueA } with B
РЕДАКТИРОВАТЬ: ответ на вопрос Луиса
В scalatest фикстуры могут быть организованы с помощью конструкторов трейтов. Я хотел бы параметризовать одну субфикстуру и заранее инициализировать поле из суперфикстуры.
Вот еще один пример, который лучше относится к реальному масштабному случаю:
class Test extends FreeSpec {
trait CommonFixture {
val commonCaseValue: Int = 1
}
abstract trait SpecialCaseFixture {
val specialCaseValue: Int
}
"special case test #1" in new CommonCaseFixture with { val specialCaseValue = commonCaseValue } with SpecialCaseFixture {
// all fixtures fields are accessible here
}
}
EarlyDefsдолжен стоять перед любым другим родительским классом или трейтом. - scala-lang.org/files /архив/спецификация/2.13/ - person sarveshseri   schedule 17.01.2020