我在Scala世界中很陌生。有没有一种更好的方法来检查一个对象中定义了多少个属性,而不是遍历所有这些属性idDefined()并增加一个值?
case class Obj (
a: Option[String],
b: Option[String],
c: Option[String],
d: Option[String]
)
Run Code Online (Sandbox Code Playgroud)
案例类扩展Product了提供productIterator。您可以像这样使用它:
val obj = Obj(Some("a") ,Some("4"), None, None)
obj.productIterator.count {
case _: Some[_] => true
case _ => false
} // returns 2
Run Code Online (Sandbox Code Playgroud)
要么
obj.productIterator.count {
case x: Option[_] => x.isDefined
case _ => false
} // returns 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40 次 |
| 最近记录: |