是否可以在没有宏的情况下编写无形 Generic.from 的模拟

Is it possible to write analog of shapeless Generic.from without macros

我正在编写我自己的简约 HList/Generic 实现来为我自己的几个案例 class 派生编码器。

我写了ToTuple证据,但是我所有的案例class都有超过22个成员,所以我不能使用tupled功能。另外我想尽可能避免使用宏。

是否可以在不使用宏的情况下将 HList 转换为大小写 class?

除了限制之外,我的用例也有一些缓解(不确定它们是否可以提供帮助):

将 case class 转换为 hlist 可能使用 .productIterator。 但是将 hlist 转换为大小写 class 可以使用宏(或无形的,其中宏在引擎盖下使用)或编写

之类的方法
case class MyClass(i: Int, s: String, b: Boolean)

object MyClass {
  def from(x: Int :: String :: Boolean :: HNil): MyClass = x match {
    case i :: s :: b :: HNil => MyClass(i, s, b)
  }
}

每个案例 class。问题是你不会写

def from[T](x: ...): T = new T(...) //pseudocode

没有宏(或反射)。