在Scala3编译时提取和访问字段
在这个博客中已经很好地解释了在 Scala 3 编译时提取案例类的元素的名称和类型:https : //blog.philipp-martini.de/blog/magic-mirror-scala3/
但是,同一个博客用于productElement获取存储在实例中的值。我的问题是如何直接访问它们?考虑以下代码:
case class Abc(name: String, age: Int)
inline def printElems[A](inline value: A)(using m: Mirror.Of[A]): Unit = ???
val abc = Abc("my-name", 99)
printElems(abc)
如何(更新和的签名printElems)实现,printElems以便printElems(abc)将其扩展为如下所示:
println(abc.name)
println(abc.age)
或者至少这个:
println(abc._1())
println(abc._2())
但不是这个:
println(abc.productElement(0))
println(abc.productElement(1))
不用说,我正在寻找一种适用于任意 case 类的解决方案,而不仅仅是Abc. 此外,如果必须使用宏,那就没问题了。但请只使用 Scala 3。