本文介紹了當分配給變量時,我可以以某種方式重用Gremlin GraphTraversals代碼嗎?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我的GraphTraversals看起來像這樣(attrGroup:
GraphTraversal<Vertex,Edge> attrGroupTraversal = some code generates it;
List<Vertex> attributeVs = attrGroupTraversal.inV().out(EdgeLabels.ContainsAttribute).toList();
List<Vertex> sourceVs = attrGroupTraversal.inV().out(EdgeLabels.ContainsSource).toList();
List<Vertex> targetVs = attrGroupTraversal.out(EdgeLabels.ContainsTarget).toList();
是否有方法可以重復使用attrGroupTraversal,這樣我就不需要重新運行最初創建它的代碼?
我收到:
:遍歷策略已完成
并且無法再對遍歷進行調制在org.apache.tinkerpop.gremlin.process.traversal.Traversal$Exceptions.traversalIsLocked(Traversal.java:245)
在…
Org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal.addStep(DefaultTraversal.java:274)
在org.apache.tinkerpop.gremlin.process.traversal.Traversal$Admin.addStep(Traversal.java:301)
在…
Org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal$Admin.addStep(GraphTraversal.java:170)
在…
Org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal.inV(GraphTraversal.java:384)
推薦答案
我建議您使用.clone()
原始遍歷。
以下操作應該有效:
GraphTraversal<Vertex,Edge> attrGroupTraversal = some code generates it;
List<Vertex> attributeVs = attrGroupTraversal.clone().inV().out(EdgeLabels.ContainsAttribute).toList();
List<Vertex> sourceVs = attrGroupTraversal.clone().inV().out(EdgeLabels.ContainsSource).toList();
List<Vertex> targetVs = attrGroupTraversal.clone().out(EdgeLabels.ContainsTarget).toList();
另請參閱:Traversal component reuse,來自TinkerPop文檔食譜。
這篇關于當分配給變量時,我可以以某種方式重用Gremlin GraphTraversals代碼嗎?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,