gremlin,什么是identity _()管道

时间:2015-08-31 20:31:05

标签: gremlin

我正在使用java-gremlin,因为我在互联网上阅读的大部分例子都是用groovy编写的,我认为身份管道在groovy中有特殊含义,但我发现它存在于java api中,那么是什么呢这意味着什么?

2 个答案:

答案 0 :(得分:2)

如TinkerPop 2.x所述,_()将任意对象转换为管道:

gremlin> x = [1,2,3]
==>1
==>2
==>3
gremlin> x._().transform{it+1}
==>2
==>3
==>4
gremlin> x = g.E.has('weight', T.gt, 0.5f).toList()
==>e[10][4-created->5]
==>e[8][1-knows->4]
gremlin> x.inV
==>[StartPipe, InPipe]
==>[StartPipe, InPipe]
gremlin> x._().inV
==>v[5]
==>v[4]

在TinkerPop 3.x中,它基本上具有相同的含义,但我们倾向于将其更多地称为匿名遍历的开始,一个未绑定到图形实例的开始。您可以在Gremlin Users邮件列表的最新帖子中阅读有关here的更多信息。以下是它在3.x中的表现:

gremlin> __(1,2,3)
==>1
==>2
==>3
gremlin> __(1,2,3).map{g.V(it.get()).next()}
==>v[1]
==>v[2]
==>v[3]

本节的用法示例如下:

http://tinkerpop.incubator.apache.org/docs/3.0.0-incubating/#graph-traversal-steps

您实际上看到它比您认为的更多,因为文档会对其进行静态导入,因此您实际上不必使用“__()”。例如:

gremlin> g.V().out('knows').where(out('created'))
==>v[4]

真的是:

gremlin> g.V().out('knows').where(__().out('created'))
==>v[4]

最后,请注意,在TinkerPop 3.x中,Groovy只是Gremlin的一种“味道”,它引入了一小部分语法糖。 3.x over Java 8中的Gremlin语言看起来与Groovy风格大致相同。

http://tinkerpop.incubator.apache.org/docs/3.0.0-incubating/#_on_gremlin_language_variants

答案 1 :(得分:0)

无法确切告诉您它带来的价值,但是看起来它只是在映射自身。

“ identity()-step(map)是一个将当前对象映射到自身的身份函数。”

http://tinkerpop.apache.org/docs/current/reference/#identity-step