Bir dış veri deposundan bir dizi XML yanıtı ayrıştırıyorum. Bu sırada bir çocuk düğümün varlığını test etmeliyim ve eğer varsa - değerini test etmeliyim.Scala XML: düğüm varlığı ve değeri için test
...
val properties = for {
val row <- root \\ "ResultDescription"
val cond:Boolean = checkDetectionNode(row) match {
case Some(nodeseq) => {
val txt = nodeseq.text.toLowerCase
if (txt contains "non-detect")
false
else
true
}
case None => true
}
if (cond)
val name = (row \ "CharacteristicName").text
if (charNameList.exists(s => s == name) == false)
} yield {
getObservedProperty(name) match {
case Some(property) => {
charNameList = name :: charNameList
property
}
}
}
...
checkDetectionNode gibi tanımlanır: val name...
satırında "basit ifade yasadışı bir başlangıç" belirsiz bir hata
private def checkDetectionNode(row: scala.xml.NodeSeq) : Option[scala.xml.NodeSeq] = {
if ((row \ "ResultDetectionConditionText") != null)
Some[scala.xml.NodeSeq]((row \ "ResultDetectionConditionText"))
else
None
}
Yukarıdaki kod sonucu aşağıdaki kod ulaşmak için. Dürüst olmak gerekirse, bir Scala programcısı ya da işlevsel bir programcı değilim (her zaman OO/emre göre daha kısmi). Scala'yı sadece birkaç günlüğüne kullanıyorum ve Java'dan ve lambda operatörlerinden bildiğim şeylerin çoğuna dayanıyordum. Ne yazık ki, gerçekten oturmak için zamanım yok ve Scala'yı dilediğim gibi yapmayı öğreniyorum. Son teslim tarihleri, hepimizi aptallar.
Birinin yanlış bir şey yapıp yapmadığımı (eğer olduğundan emin olduğum gibi) bana bir göz atabileceğini ve bana bildirebileceğini umuyorum. Gösterilen kodu, umduğum, soruyla alakalı olarak sınırlamaya çalıştım. Ancak, herhangi bir ek kod gerekip gerekmediğini lütfen bana bildirin.
Teşekkür
Yukarıdaki açıklamaların bir açıklama anlaşmasının parçası olduğunu açıkça belirtmeliyim. “If (cond)”, getiri bloğunun yürütülmesini belirlemek için varsayalım. Kodu daha fazla incelemek için cevabımı düzenledim. – Cowan