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("")
彼らのどれ、または3分の1がより慣用的です