Копировать поле элемента типа из элемента типа другого типа

#scala #generics #type-members

#scala #общие #тип-члены

Вопрос:

     trait Converter {
      type From
      type To

      def convert(input: From): To
    }

    object IntString extends Converter {
      override type From = Int
      override type To = String

      override def convert(input: Int): String = input.toString
    }

    object BigDecimalFloat extends Converter {
      override type From = BigDecimal
      override type To = Float

      override def convert(input: BigDecimal): Float = input.floatValue()
    }

    trait ConverterCopy {
      type originalConverter <: Converter

      type From = originalConverter.From
      type To = originalConverter.To

      def convert(input: From): To
    }

    object IntStringCopy extends ConverterCopy {
      override type originalConverter = IntString.type

      override def convert(input: IntStringCopy.From): IntStringCopy.To = ???
    }
 

Следующий код не компилируется со следующим предупреждением

 [Error] not found: value originalConverter
[Error] not found: value originalConverter
two errors found

 

Я хочу скопировать значение полей типа реализации Convert в поля типа реализации ConvertCopy.

Есть ли какой-либо способ сделать это?

Комментарии:

1. Вам нужно значение, чтобы ссылаться на его элементы типа: scastie.scala-lang.org/BalmungSan/9enC4nHoSZC3fq957KIr5Q/3