otherV
エッジ(e
)から開始し、単一の頂点引数(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
)に割り当ててから、引数として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}