多くの不明な属性を持つノードの NodeSeq があります。NodeSeq を検証して再作成し、エラーが発生した場合はノードの属性として追加する必要があります。
以下のソリューションは機能しますが、目標を達成するためのよりエレガントな方法があるかどうか疑問に思っていましたか?
def validateErrors (nodes:NodeSeq):NodeSeq={
var newNodes = new Queue[Node]()
nodes.foreach ( n => {
var error:Boolean = false
var errorMessage:String = ""
//...do many complex validations
// and get the error status code and error message
if (error)
newNodes += AddError(n,errorMessage)
else
newNodes +=n
})
newNodes
}
private def AddError (node:Node, message:String ):Node= node match {
case elem : Elem => elem % Attribute(None, "color", Text("red"), Null) % Attribute(None, "message", Text(message ), Null) //and many more
case other => other
}