У меня есть 2 связанных черты.Dao будет использоваться как класс, а DaoHelper будет использоваться объектом-компаньоном Dao.Я хотел бы, чтобы черта Dao могла использовать функции, определенные в DaoHelper. Единственный способ выяснить, как это сделать, - определить черту компаньона как val.Однако каким-то образом компаньон ожидает, что его тип будет D.this.T, который, как я думал, я определил как подтип Doa.Я запутался здесь.Приношу свои извинения за новый вопрос, я из динамического языка.
/ test2.scala: 14: переопределение сопутствующего значения в черте Dao типа Test.DaoHelper [D.this.T];[значение] значение спутника имеет несовместимый тип [ошибка] значение параметра = D
object Test extends App {
trait Dao {
type T <: Dao
val companion: DaoHelper[T]
def getHelpfulData = companion.help
}
trait DaoHelper[Dao] {
val help = "Some helpful data"
}
class D extends Dao {
val companion = D
}
object D extends DaoHelper[D]
}