Допустим, у меня есть следующее:
case class TestField(value: String)
case class TestField2(value: String)
implicit class ProductExtensions[T <: Product](val value T) extends AnyVal {
def mapTo[R <: Product](implicit tGen: Generic.Aux[T, String :: HNil], rGen: Generic.Aux[R, String :: HNil]: R = ???
}
val testField2 = TestField("my value").mapTo[TestField2]
// TestField2("my value")
Могу ли я "увеличить" функцию mapTo
для работы с типами, отличными от String
, без указания типа?
Примечание TestField
, ни TestField2
реализуют AnyVal (и я не хочу их), поэтому я не могу использовать Unwrapped
.
Редактировать
@ Dmytro_Mitin ответ работает в моем примере выше, но если я добавлю пример к этому:
implicit class ProductExtensions[T <: Product](val value T) extends AnyVal {
def mapTo[R <: Product](implicit tGen: Generic.Aux[T, String :: HNil], rGen: Generic.Aux[R, String :: HNil], o: OtherImplicit[String]): R = ???
}
... так что я как бы ищу это на работу (но это не так):
implicit class ProductExtensions[T <: Product, U](val value T) extends AnyVal {
def mapTo[R <: Product](implicit tGen: Generic.Aux[T, U :: HNil], rGen: Generic.Aux[R, U :: HNil], o: OtherImplicit[U]): R = ???
}
Есть идеи?