假设我有一个 Element 对象(实际上来自 JDom)。它可能有一个名为“Group”的子元素,也可能没有。如果是这样,那么它可能有一个名为“ID”的属性,或者它可能没有。我想要 ID 值(如果存在)。
如果是 Java,我会写。
private String getId(Element e) {
for (Element child : e.getChildren())
if (child.getName().equals("Group"))
for (Attribute a : child.getAttributes())
if (a.getName().equals("ID"))
return a.getValue();
return null;
}
在斯卡拉我有
val id = children.find(_.getName == "Group") match {
case None => None
case Some(child) => {
child.getAttributes.asScala.find(_.getName == "ID") match {
case None => None
case Some(a) => Some(a.getValue)
}
}
}
或者
val id = children.find(_.getName == "Group").
map(_.getAttributes.asScala.find(_.getName == "ID").
map(_.getValue).getOrElse("")).getOrElse("")
他们的哪个或第三个更惯用