我正在使用Sesame库在内存中的三重存储上运行SPARQL查询。
我正在使用Clojure实现此目的。
查询结果是一个类似Iterator的自定义对象,因此clojure seq不能立即使用。
将自定义java迭代器之类的对象转换为clojure序列的最优雅方法是什么?
我想到的最明显,最愚蠢的想法是,将其循环并建立clojure vector ,但是我敢肯定,有更优雅的方法可以解决此问题。
[1] http://www.openrdf.org/doc/sesame2/api/info/aduna/iteration/Iteration.html
最佳答案
测试版本:
(defn iteration->seq [iteration]
(seq
(reify java.lang.Iterable
(iterator [this]
(reify java.util.Iterator
(hasNext [this] (.hasNext iteration))
(next [this] (.next iteration))
(remove [this] (.remove iteration)))))))