代码之家  ›  专栏  ›  技术社区  ›  Aki

通过无形状获取默认case类参数

  •  2
  • Aki  · 技术社区  · 7 年前

    shapeless是否提供一个类型类/宏来调用 HList 包含case类所有参数的默认值?

    假设我们有这个案例类:

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

    那么我想买这样的 HLIST :

    None :: Some(() => 18) :: HNil
    
    1 回复  |  直到 7 年前
        1
  •  6
  •   fshp    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