首页 > 解决方案 > 使用无形 HList 检查带有选项字段的案例类,以确保它们都为无

问题描述

我有一个案例类(简化):

case class UserData(name: Option[String], age: Option[String]) {
  lazy val nonEmpty = name.isDefined || age.isDefined // TODO
}

我可以nonEmpty使用例如 Shapeless 的 HList 替换当前的检查实现,以枚举所有字段以检查所有字段是否设置为None或至少一个具有值?

标签: scalashapeless

解决方案


case class UserData(name: Option[String], age: Option[String]) {
  lazy val isEmpty = this.productIterator.forall(_ == None)
}

UserData(None,None).isEmpty
UserData(None,Some("s")).isEmpty

我想你想在案例类中做不同的行为,如果你不这样做,那么@pamu 答案就是你要找的。如果你真的想使用 shapeless 可以,但没必要。


推荐阅读