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}