通过 Shapeless 获取默认大小写 class 参数

Get default case class arguments via Shapeless

shapeless 是否提供了一种类型 class/macro 来调用 HList 包含案例 class 的所有参数的默认值?

假设我们有这种情况class:

case class User(name: String, age: Int = 18)

那我想得到这样一个HList:

None :: Some(() => 18) :: HNil

默认参数是通过合成方法实现的。 试试它的特质。 https://github.com/milessabin/shapeless/blob/master/core/src/main/scala/shapeless/default.scala

import shapeless.Default

case class User(name: String, age: Int = 18)
val d = Default[User]
println(d())

输出:

None :: Some(18) :: HNil