scala - 检查定义了多少对象属性
问题描述
我是 Scala 世界的新手。有没有更好的方法来检查对象中定义了多少属性,而不是遍历所有属性idDefined()
并增加一个值?
case class Obj (
a: Option[String],
b: Option[String],
c: Option[String],
d: Option[String]
)
解决方案
案例类扩展Product
了提供productIterator
. 你可以像这样使用它:
val obj = Obj(Some("a") ,Some("4"), None, None)
obj.productIterator.count {
case _: Some[_] => true
case _ => false
} // returns 2
或者
obj.productIterator.count {
case x: Option[_] => x.isDefined
case _ => false
} // returns 2
推荐阅读
- android-studio - 在 Android Studio 最新版本中找不到图标
- r - How does `fct_reorder2` compute this result?
- code-analysis - 我无法在 CodeQL 中运行数据库分析
- python - Python:按日期排序、分组或连接而不更改索引顺序
- c# - 为什么我的整数值在 Unity3D 中增加不止一次
- java - Navigate up from activity to fragment open the same fragment - Android Navigation Component
- flutter - 不支持的类文件主要版本 61 错误
- uninstallation - 无法卸载 NetBeans 6.9.1;缺少目标组件
- php - Laravel 资源将我的关联数组转换为标准数组
- python - Django 将嵌套对象序列化为 json