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

时间:2018-11-23 21:31:30

标签: scala shapeless

lessshape是否提供类型类/宏来召唤HList,其中包含案例类所有参数的默认值?

假设我们有这个案例类:

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

那我想得到一个HList

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

1 个答案:

答案 0 :(得分: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())

出局:

None :: Some(18) :: HNil