C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了collections – 将org.w3c.dom.NodeList转换为Clojure ISeq大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试处理新的defprotocol,reify等.

我有一个从XPath调用返回的org.w3c.dom.NodeList,我想将它“转换”为一个ISeq.@H_772_3@

Scala中,我实现了一个隐式转换方法:@H_772_3@

implicit def nodeList2Traversable(nodeList: NodeList): Traversable[Node] = {
  new Traversable[Node] {
    def foreach[A](process: (NodE) => A) {
      for (index <- 0 until nodeList.getLength) {
        process(nodeList.item(indeX))
      }
    }
  }
}

NodeList包括方法int getLength()和Node item(int indeX).@H_772_3@

我如何在Clojure中做相同的操作?我希望我需要使用defprotocol.我需要定义哪些函数来创建seq?@H_772_3@

如果我使用循环和重复进行简单,天真的转换到列表,我将得到一个非惰性结构.@H_772_3@

解决方法

Clojure的大多数序列处理函数都返回lazy seqs,@L_597_7@map和range函数
(defn node-list-seq [^org.w3c.dom.NodeList node-list]
  (map (fn [index] (.item node-list indeX))
       (range (.getLength node-list))))

请注意,上面的NodeList类型提示不是必需的,但可以提高性能.@H_772_3@

现在您可以像这样使用该功能:@H_772_3@

(map #(.getLocalName %) (node-list-seq your-node-list))

大佬总结

以上是大佬教程为你收集整理的collections – 将org.w3c.dom.NodeList转换为Clojure ISeq全部内容,希望文章能够帮你解决collections – 将org.w3c.dom.NodeList转换为Clojure ISeq所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。