我创建了一个名为的用户定义步骤otherV
,它从一条边 ( e
) 开始,采用单个 Vertex 参数(要么 要么e.inV
)e.outV
,然后输出该边上的另一个顶点。
Gremlin.defineStep('otherV', [Edge, Pipe], {Vertex v -> _().bothV.filter{!v.equals(it)}})
我有g=TinkerGraphFactory.createTinkerGraph();
当我像这样传递参数顶点时,该otherV
步骤会给出正确的结果:
g.v(1).bothE('knows').otherV(g.v(1)).path{it.name}{it.label}
==>[marko, knows, vadas]
==>[marko, knows, josh]
x
但是,当我第一次在一个步骤中将参数 vertex 分配给一个变量(例如) sideEffect
,然后x
作为参数传递给我的步骤时,它会失败并显示 ERROR No such property: x for class: groovysh_evaluate
。
g.v(1).sideEffect{marko=it}.bothE('knows').otherV(marko).path{it.name}{it.label}
No such property: marko for class: groovysh_evaluate
我做错了什么?
otherV
这是自定义步骤应该如何工作的简单说明:
// g is the TinkerGraph
marko = g.v(1); vadas = g.v(2);
edge = g.e(7); // e[7][1-knows->2]
gremlin> edge.otherV(marko).map
==>{name=vadas, age=27}
gremlin> edge.otherV(vadas).map
==>{name=marko, age=29}