为什么不能将小精灵GraphTraversal捕获为Groovy变量?

为什么不能将小精灵GraphTraversal捕获为Groovy变量?,groovy,gremlin,tinkerpop,tinkerpop3,Groovy,Gremlin,Tinkerpop,Tinkerpop3,我正在试验TinkerPop3文档中的。在Gremlin shell中加载g=TinkerFactory.createClassic后: gremlin> marko = g.v(1) ==>v[1] gremlin> marko ==>v[1] 然而: gremlin> marko = g.V().has('name', 'marko') ==>v[1] gremlin> marko gremlin> 为什么第二个表单不捕获v[1] 对于第二

我正在试验TinkerPop3文档中的。在Gremlin shell中加载g=TinkerFactory.createClassic后:

gremlin> marko = g.v(1)
==>v[1]
gremlin> marko
==>v[1]
然而:

gremlin> marko = g.V().has('name', 'marko')
==>v[1]
gremlin> marko
gremlin>
为什么第二个表单不捕获v[1]

对于第二种形式,尝试使用变量会导致错误:

gremlin> marko.out('knows')
The traversal strategies are complete and the traversal can no longer have steps added to it
Display stack trace? [yN] 

您正在处理来自每个结果的不同类类型。考虑下面的控制台会话:

gremlin> g = TinkerFactory.createClassic()
==>tinkergraph[vertices:6 edges:6]
gremlin> marko = g.v(1)
==>v[1]
gremlin> marko.class
==>class com.tinkerpop.gremlin.tinkergraph.structure.TinkerVertex
上面生成一个顶点,但正如您在下面看到的:

gremlin> marko = g.V().has('name','marko')
==>v[1]
gremlin> marko.class
==>class com.tinkerpop.gremlin.tinkergraph.process.graph.TinkerGraphTraversal
您将获得一个遍历实例。您可以看到v[1]控制台的输出,因为控制台已自动为您迭代结果。因为您已经对其进行了迭代,所以marko变为空:

gremlin> marko.hasNext()
==>false
如果要手动迭代,请执行以下操作:

gremlin> marko = g.V().has('name','marko');null
==>null
gremlin> marko.hasNext()
==>true
gremlin> marko
==>v[1]

您正在处理来自每个结果的不同类类型。考虑下面的控制台会话:

gremlin> g = TinkerFactory.createClassic()
==>tinkergraph[vertices:6 edges:6]
gremlin> marko = g.v(1)
==>v[1]
gremlin> marko.class
==>class com.tinkerpop.gremlin.tinkergraph.structure.TinkerVertex
上面生成一个顶点,但正如您在下面看到的:

gremlin> marko = g.V().has('name','marko')
==>v[1]
gremlin> marko.class
==>class com.tinkerpop.gremlin.tinkergraph.process.graph.TinkerGraphTraversal
您将获得一个遍历实例。您可以看到v[1]控制台的输出,因为控制台已自动为您迭代结果。因为您已经对其进行了迭代,所以marko变为空:

gremlin> marko.hasNext()
==>false
如果要手动迭代,请执行以下操作:

gremlin> marko = g.V().has('name','marko');null
==>null
gremlin> marko.hasNext()
==>true
gremlin> marko
==>v[1]

检查类型;当has为泛型时,v始终返回一个Vertext。@DaveNewton,而该泛型未在变量中捕获?请尝试实际使用它,而不是依赖shell的默认显示。@DaveNewton在水平规则下更新。检查类型;当has是泛型时,v总是返回一个Vertext。@DaveNewton,而该泛型未在变量中捕获?请尝试实际使用它,而不是依赖shell的默认显示。@DaveNewton在水平规则下更新。