我创建了一个名为的用户定义步骤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}