为什么我无法为现有的优步图表添加边缘?

  • 本文关键字:添加 边缘 clojure
  • 更新时间 :
  • 英文 :


Clojure和Ubergraph库的新手,所以如果这非常明显,请原谅我。尝试使用 Ubergraph 添加边功能向现有图表添加边缘。以下代码按预期工作:

(def graph1 (uber/graph [:a :b]))
(uber/pprint (uber/add-edges graph1 [:a :c]))

。产生以下内容:

3 Nodes:
:a
:b
:c
2 Edges:
:a <-> :b
:a <-> :c

但是,这:

(def graph1 (uber/graph [:a :b]))
(uber/add-edges graph1 [:a :c])
(uber/pprint graph1)

生产:

2 Nodes:
:a
:b
1 Edges:
:a <-> :b

不会添加第二个边缘,尽管文档表明这是正确的。我做错了什么?

事实上,(uber/add-edges graph1 [:a :c])在两个示例中都返回一个全新的图形,而graph1保持不变。在第一种情况下,您正在打印结果。在第二种情况下,您没有这样做,您实际上是在浪费这个新图形并打印graph1。这是使用functional programming时的正常行为,它适用于immutable datafunctions with no side effects概念。

最新更新