Я пытаюсь понять, почему перечисление scala не выбирает значения из других типов перечисления, когда создается как значение в нем.Скажем, у меня есть следующее
trait SchemaBase extends Enumeration {
implicit def valueToVal(x: Value): Val = x.asInstanceOf[Val]
case class Val(name: String, dataType: DataType, nullable: Boolean) extends super.Val {
val col: Column = functions.col(name)
}
protected def column(name: String, dataType: DataType, nullable: Boolean = true): SchemaBase.Val = {
Val(name, dataType, nullable).asInstanceOf[SchemaBase.Val]
}
object SchemaBase extends SchemaBase
Теперь, если я создам Enumeration
s AScehma
и BSchema
, как показано ниже:
object ASchema extends SchemaBase {
val Id: SchemaBase.Val = column("a_id", IntegerType)
val BName: SchemaBase.Val = BSchema.Name
}
object BSchema extends SchemaBase {
val Name: SchemaBase.Val = column("b_name", StringType)
}
Здесь ASchema.BName
не будет доступнов ValueSet
из ASchema
.
Я понимаю, BName
- это значение перечисления BSchema
и знаю подход к решению этой проблемы, но хотел бы знать , почему такое поведение?