2014-10-08 18 views
0

当谈到Gremlin时,这里总共n00b,但是有人会告诉我“转换”和“sideEffect”之间的区别吗?我阅读了Gremlin Docs,并且两人似乎都“有时”接受输入,按摩数据并产生输出。Gremlin转换和sideEffect之间有什么区别

我以为我接触到的东西看起来像“变形”大多是“吸气剂”,但为什么它会被称为“变形”?然后我看到他们将功能置于变换之下,不仅仅是获取数据。

任何帮助表示赞赏,在此先感谢!

回答

2

一个transform表现为地图功能,其中在小鬼管道值字面上tranformed为不同的值:

gremlin> g.V.transform{it.name} 
==>marko 
==>vadas 
==>lop 
==>josh 
==>ripple 
==>peter 

注意,在上面的例子中,我们已经从一个Vertex了前transform step到Vertex上的name属性的字符串值。现在看有sideEffect会发生什么:

gremlin> g.V.sideEffect{it.name} 
==>v[1] 
==>v[2] 
==>v[3] 
==>v[4] 
==>v[5] 
==>v[6] 

通过sideEffect不变的Vertex通行证(即它离开sideEffect作为Vertex,只是因为它去的)。 sideEffect的意义在于,你可以在管道的某个步骤做某些事情,这些事情与管道本身的处理无关。换句话说,sideEffect闭包的返回值基本上被忽略。

+0

Stephen,这是一个很好的答案。我特别感谢你解释sideEffect期间发生的事情的方式。非常感谢。 – crawdaddy18 2014-10-09 14:55:12

+0

如何让管道返回包含结束顶点的单个对象以及之前累积的任何副作用? – 2014-11-06 22:13:23

+0

作者:“end vertex”,你的意思是最后一个穿过管道?和“单个对象”,你的意思是像一个List:'[lastVertex,sideEffect]'? – 2014-11-06 22:47:35

相关问题