2
通常のXML構造から属性を抽出しようとしています。特定の属性が欠落している要素を最初に除外するのは自然なことです。ヌル属性のXML要素のフィルタリング
次が動作しない理由を私は(私が今まで対null
をテストするためのアイデアを得た理由のための答えを参照)を知らない:
val test = <top><el attr="1"></el><el></el><el attr="2"></el></top>
test.child.filter(_ \ "@attr" != null).map(_ \ "@attr")
// ArrayBuffer(1, NodeSeq(), 2)
真ん中の要素がfilter
後にまだそこにあるのはなぜ?
私はそれは、演算子の優先順位ではありません確認しました:
test.child.filter(x => (x \ "@attr") != null).map(_ \ "@attr")
// ArrayBuffer(1, NodeSeq(), 2)
代わりに私がmap
ステップの後NodeSeq()
要素を除外することができるか、(これは内部的に最適化されていると仮定した場合)?