Позволяет сказать, что у меня есть объект Element (на самом деле JDom). Он может иметь дочерний элемент, называемый "Группа", или он может и не быть. Если это так, то у него может быть атрибут с именем "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;
}
В scala у меня есть
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("")
Кто из них, или третий, более идиоматичен