当分配给变量时,我可以以某种方式重用Gremlin GraphTraversals代码吗? [英] Can I somehow reuse Gremlin GraphTraversals code when assigned to a variable?

查看:73
本文介绍了当分配给变量时,我可以以某种方式重用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代码吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆