我錯過了一些相當簡單的語法,我收集。我試圖重寫一個元素標籤到其他東西,並保持一切完好無損。scala xml重寫規則(或簡單模式幫助)
object htmlRule extends RewriteRule {
override def transform(n: Node): Seq[Node] = n match {
case Elem(prefix, "document", attribs, scope, [email protected]_*) =>
Elem(prefix, "html", attribs, scope, child)
case other => other
}
}
現在,我問了兩件事情的解釋:
1)究竟做 「孩@ _ *」 的意思是用簡單的英語?
2)如何捕獲「child @ _ *」的值並讓它直接傳遞給新元素?目前,我收到以下錯誤,這是有道理的。
[error] found : Seq[scala.xml.Node]
[error] required: scala.xml.Node
[error] Elem(prefix, "html", attribs, scope, child)
我不會執着於這兩種,所以如果有一個更好的方式來簡單地改變一個特定節點的元素名稱,讓我們來這裏吧......
感謝, --tim
感謝Randall, 你可以解釋它與一個Elem與一個節點序列_ *相匹配的奇怪現象嗎?但是,Elem構造函數不需要一個節點序列?首先,這是正確的嗎?其次,如果是這樣,那麼達到我想要的行爲的方式是什麼?感謝您詳細的綁定說明:) – Tim 2010-05-29 15:04:12
使用子代:_ *將Seq [Node]作爲Node * vararg參數應用。 – 2010-05-29 16:27:07
謝謝西爾維奧,我仍然不確定爲什麼這個神奇的語法工作,但它確實。很顯然,我有一個全新的Scala學習領域:) – Tim 2010-05-29 17:04:20