#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