通过Shapeless获取默认的case类参数

Aki*_*Aki 2 scala shapeless

shapeless是否提供了一个类型类/宏来召唤一个HList包含案例类所有参数的默认值?

假设我们有这个案例类:

case class User(name: String, age: Int = 18)
Run Code Online (Sandbox Code Playgroud)

然后我想得到这样一个HList:

None :: Some(() => 18) :: HNil
Run Code Online (Sandbox Code Playgroud)

fsh*_*shp 7

默认参数是通过合成方法实现的.试试吧. 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())
Run Code Online (Sandbox Code Playgroud)

日期:

None :: Some(18) :: HNil
Run Code Online (Sandbox Code Playgroud)