Gremlin sideEffect变量赋值不起作用

时间:2013-02-04 06:35:55

标签: neo4j gremlin

我正在尝试使用以下构造完成顶点子图匹配:

a = g.v(1) 
p = g.v(5) 

a.filter{it.map() == p.map()}.out.sideEffect{p = p.out}.loop(3){it.object != null}

我应该说地图比较出人意料地运作得很好,但副作用部分似乎并没有以适当的方式修改p - 顶点。当我在执行这些Gremlin步骤后打印p - 它看起来像一个管道。但更明确的p = g.v(p.out.id)p = g.v(p.outE.inV.id)甚至数字i++副作用似乎根本不会修改该值。

我在Neo4j Gremlin shell和Groovy中都尝试了这个。

1 个答案:

答案 0 :(得分:2)

如果你在期待别的东西的时候得到一个管道,试试下一个(),看看是否能得到你想要的东西。请注意,当我在sideEffect闭包中的next()时,x会发生变化。

gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> x = g.v(1)
==>v[1]
gremlin> g.V.out.sideEffect{x = x.out.next()}   
==>v[2]
gremlin> x
==>v[2]