首页 > 解决方案 > 检查定义了多少对象属性

问题描述

我是 Scala 世界的新手。有没有更好的方法来检查对象中定义了多少属性,而不是遍历所有属性idDefined()并增加一个值?

case class Obj (
 a: Option[String],
 b: Option[String],
 c: Option[String],
 d: Option[String]
)

标签: scala

解决方案


案例类扩展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

推荐阅读