外部データストアからの一連のXML応答を解析しています。その間、子ノードの存在をテストし、存在する場合はその値をテストする必要があります。それを達成するために、私は次のコードを持っています:
...
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は次のように定義されます。
private def checkDetectionNode(row: scala.xml.NodeSeq) : Option[scala.xml.NodeSeq] = {
if ((row \ "ResultDetectionConditionText") != null)
Some[scala.xml.NodeSeq]((row \ "ResultDetectionConditionText"))
else
None
}
上記のコードでは、行に「単純な式の不正な開始」という不特定のエラーが発生しますval name...
。正直なところ、私はScalaプログラマーでも、関数型プログラマーでもありません(常に、OO /命令型に対してより部分的でした)。私はScalaを数日間使用しており、Javaおよびラムダ演算子から知っていることのほとんどに基づいています。残念ながら、私は座って、Scalaを本当に学ぶ時間がありません。締め切り、私たち全員を馬鹿にします。
私は誰かが見て、私が間違っていることがあるかどうか私に知らせてくれることを望んでいます(私は確かにそうです)。表示されるコードを、質問に関連するものに制限しようとしました。ただし、追加のコードが必要な場合はお知らせください。
ありがとう