我试图使用clojure和neocons库将数据从StackOverflow导入到Neo4j。请原谅我是一个新手。'let`里面的语句for`循环不会同时运行
下面是Leiningen我的主要功能:
(defn -main
[& args]
(let [neo4j-conn (nr/connect "http://localhost:7777/db/data/")]
(cypher/tquery neo4j-conn "MATCH n OPTIONAL MATCH n-[r]-() DELETE n, r")
(for [page (range 1 6)]
(let [data (parse-string (stackoverflow-get-questions page))
questions (data "items")
has-more (data "has_more")
question-ids (map #(%1 "question_id") questions)
answers ((parse-string (stackoverflow-get-answers question-ids)) "items")]
(map #(import-question %1 neo4j-conn) questions)
(map #(import-answer %1 neo4j-conn) answers)
)
)
)
)
我定义import-question
和import-answer
功能和那些做工精细独立。事实上,有什么奇怪的是我可以删除其中一个import-*
行,另一个将工作得很好。
任何人都可以看到我是否做了简单的事情是错的吗?
您的具体问题没有重复,但答案肯定是。 'map'和'for'都是懒惰的,除非你使用它们的结果,否则它什么都不会做。第一个'map'调用最终是一个noop,因为没有办法消耗它的输出。尝试将'for'和至少第一个'map'调用包装到'dorun'的调用中。 – noisesmith 2015-02-09 20:27:21
啊,太好了,当然就是这样。谢谢! – 2015-02-09 20:35:48
懒虫会不时地咬我们所有人(或者至少是我)。 PS:@noisesmith足够长的时间来回答问题。重复回答关于SO的不同问题没有任何问题。如果有可接受的答案,它将帮助那些在搜索结果中漫步的人。 – 2015-02-09 21:57:18