我在Scala世界中很陌生。
有没有一种更好的方法来检查一个对象中定义了多少个属性,而不是使用idDefined()
遍历所有属性并增加一个值?
case class Obj (
a: Option[String],
b: Option[String],
c: Option[String],
d: Option[String]
)
答案 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