scala - 使用无形 HList 检查带有选项字段的案例类,以确保它们都为无
问题描述
我有一个案例类(简化):
case class UserData(name: Option[String], age: Option[String]) {
lazy val nonEmpty = name.isDefined || age.isDefined // TODO
}
我可以nonEmpty
使用例如 Shapeless 的 HList 替换当前的检查实现,以枚举所有字段以检查所有字段是否设置为None
或至少一个具有值?
解决方案
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 可以,但没必要。
推荐阅读
- f# - 是否可以在 F# 中定义公共静态只读字段?
- c# - 使用箭头键移动二维数组中的元素并限制移动
- python - 我想知道为什么我制作的图像播放器不能在大尺寸窗口(> 8K 窗口)下正常工作
- apache-kafka - Confluent local start 给出 config.json: No such file or directory
- prolog - Prolog 错误:无权修改静态过程“marital_status/2”
- c# - 发布到 ASP.NET Core 3.1 Web 应用程序时,“[FromBody]MyClass 数据”通常为空
- python - 如何检查任何数组值的长度是否等于 1
- sql - 从当前日期前六个月提取数据不起作用
- php - Laravel根据子数组中元素的数量对数组进行排序
- node.js - doc.save() 不是函数