检查定义了多少个对象属性

时间:2019-05-10 12:26:52

标签: scala

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

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

1 个答案:

答案 0 :(得分:7)

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