0
(defn cypher
[query]
(let [result (-> *cypher* (.execute query))]
(for [row result
column (.entrySet row)]
{(keyword (.getKey column))
(Neo4jVertex. (.getValue column) *g*)})))
repl=> (cypher "start n=node:people('*:*') return n")
{:n #<Neo4jVertex v[1]>}
此查詢返回兩個結果,但我只能看到一個使用clojure.core/for
。我應該怎麼做呢?clojure.core/for Cypher ExecutionResult
的Neo4j的文檔有這個例子(這是我想要效仿):
for (Map<String, Object> row : result)
{
for (Entry<String, Object> column : row.entrySet())
{
rows += column.getKey() + ": " + column.getValue() + "; ";
}
rows += "\n";
}
謝謝。 'for'與'doseq'的功能相同,只是它返回一個序列,這是我在這種情況下所需要的,而不是零。 'doseq'更像副作用,如反覆調用.put – tjb1982
'(into []( - > * cypher *(.execute query)))'在我的示例中修復了它,但我不確定爲什麼,因爲顯然這是可迭代的,沒有'(到[] ...)' – tjb1982
啊,我明白了,我一定誤解了你的實際問題。我也在努力自己學習Clojure,最近我對某種程度上的'for'和'doseq'感到非常困惑。 –